matlab - 用于文件创建的 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"
我想知道是否有人可以解释为什么每种输入法返回如此截然不同的输出。在我看来,所有三种方法都应该返回相同的东西......
解决方案
basefilename = 'testfile';
basefilename 是一个字符数组(注意单引号)。双引号表示单个字符串变量。
filename = [basefilename num2str(1) '.mat']
将通过连接 char 的 while 数组来产生所需的结果
filename = ["stuff" ".mat"]
将生成一个由 2 个字符串组成的数组,正如您所指出的
filename = ["stuff" + ".mat"]
产生一个字符串类型的串联变量。
你展示的例子
filename = ['chars' ".strings"]
filename = ['chars' + "strings"]
将 char 数组(单引号)转换为字符串,然后执行赋值。
推荐阅读
- amazon-cloudwatch - Cloudwatch 警报未将丢失数据视为未违反
- database - BigTable 聚合数据
- nginx - 如何在网站的子文件夹上托管烧瓶应用程序?
- firebase - Firestore 安全规则 - 当字段可能丢失时强制执行时间戳类型
- entity-framework-core - 如何在实体框架数据库中进行通用实体框架核心 OData 查询?
- python - JSON转储由单引号包围并包含转义单引号的字符串
- c# - 无法将类型“Project.Models.Artist”隐式转换为“字符串”
- subquery - TypeORM 子查询聚合同一张表中的数据
- python - 输入一个条目会导致所有条目都被写入(Tkinter)
- amazon-web-services - vpc“X”中的lamda可以访问vpc“y”中的efs吗