用于创建文件的 Matlab 字符串连接

标签 matlab file concatenation string-concatenation

我正在学习在线类(class)来学习和练习 matlab。在类(class)中,这些人写道:

basefilename = 'testfile';
filename = [basefilename num2str(1) ".mat"]

Matlab 返回:

testfile1.mat

但是,当输入相同的输入时,我得到以下输出:

filename = 

  1×3 string array

    "testfile"    "1"    ".mat"

我通过输入尝试了更常用的连接方法

filename = [basefilename + "1" + ".mat"]

并进行正确的输出:

testfile1.mat

但是,将 "1" 更改为 num2str(1) 时(以便用稍后在 for 循环中可以变化的变量替换该数字) :

filename = [basefilename + num2str(1) + ".mat"]

我得到了完全不同的输出:

filename = 

  1×8 string array

    "165.mat"    "150.mat"    "164.mat"    "165.mat"    "151.mat"    "154.mat"    "157.mat"    "150.mat"

我想知道是否有人可以解释为什么每种输入方法返回如此截然不同的输出。在我看来,所有三种方法都应该返回相同的东西......

最佳答案

basefilename = 'testfile';

basefilename 是一个字符数组(注意单引号)。双引号表示单个字符串变量。

filename = [basefilename num2str(1) '.mat']

将通过连接 char 的 while 数组来产生所需的结果

filename = ["stuff" ".mat"]

将生成一个包含 2 个字符串的数组,正如您所指出的

filename = ["stuff" + ".mat"]

产生一个字符串类型的连接变量。

您展示的示例

filename = ['chars'  ".strings"]

filename = ['chars' + "strings"]

会将 char 数组(单引号)转换为字符串,然后执行赋值。

关于用于创建文件的 Matlab 字符串连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58624733/

相关文章:

matlab - 具有 2 个变量的函数曲线下的阴影面积

c - 在 C 控制台程序中读取(或写入)文件时出错

c - 在 Linux 上更新 PATH 变量

php - 使用 PHP 和 CURL 下载 htaccess 保护的文件

python - 省略号列出 [...] 并将列表连接到自身

matlab - 使用单输入 GPML 进行大规模回归

matlab - 从变量创建向量范围

matlab - gnu-octave 方波载波的正弦 FM 调制

sql - Concatenate 中的 Select 语句 (Oracle)

c++ - 在 C++ 中连接 3 个或更多元素的字符串 (string[i]+string[i+1]+string[i+2])