首页 > 解决方案 > 用于文件创建的 Matlab 字符串连接

问题描述

我正在学习和练习matlab的在线课程。在课程中,这些人写道:

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"

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

标签: matlabfileconcatenationstring-concatenation

解决方案


basefilename = 'testfile';

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

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

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

filename = ["stuff" ".mat"]

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

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

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

你展示的例子

filename = ['chars'  ".strings"]

filename = ['chars' + "strings"]

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


推荐阅读