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

Matlab string concatenation for file creation

我正在学习在线课程来学习和练习 matlab。在课程中,伙计们写道:

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

和 Matlab returns:

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"

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

你能试试去掉“+”和“”吗?所以:

文件名 = [基本文件名 num2str(1) '.mat']

'+'在MATLAB中不用于连接,'和"在MATLAB中是有区别的()

basefilename = 'testfile';

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

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

将通过连接 char 的数组而产生所需的结果,而

filename = ["stuff" ".mat"]

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

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

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

您展示的例子

filename = ['chars'  ".strings"]

filename = ['chars' + "strings"]

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