Mai*_*Mai 4 matlab string-formatting
我有11×11的矩阵,我救了他们的.mat
文件从F01_01
到F11_11
.我必须Func
在每个文件上运行一个函数.由于需要很长时间,我想编写一个脚本来自动运行该功能:
for i=01:11
for j=01:11
filename=['F',num2str(i), '_', num2str(j),'.mat'];
load(filename);
Func(Fi_j); % run the function for each file Fi_j
end
end
Run Code Online (Sandbox Code Playgroud)
但它不起作用,Matlab无法找到mat文件.
有人可以帮忙吗?
Sha*_*hai 10
i=01;
j=01;
['F',num2str(i), '_', num2str(j),'.mat']
Run Code Online (Sandbox Code Playgroud)
评估为
F1_1.mat
而不是
F01_01.mat
正如所料.
原因是它i=01
是一个双重类型赋值并且i
等于1
- 这些类型的变量没有前导零.
问题的可能解决方案是
for ii = 1:11
for jj= 1:11
filename = sprintf('F_%02d_%02d.mat', ii, jj );
load(filename);
Func(Fi_j); % run the function for each file Fi_j
end
end
Run Code Online (Sandbox Code Playgroud)
注意使用sprintf
格式化double ii
和jj
使用前导零%02d
.
您可以使用第二个参数num2str
来格式化其输出,例如:num2str(ii,'%02d')
.
在处理字符串时使用字符串格式化工具是一种很好的做法.
在matlab中更好的做法是不使用i
和j
作为循环计数器,因为它们在matlab中的默认值是sqrt(-1)
.