我正在学习在线类(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/