如何在一个循环中执行几个垫文件。

2视图(30天)
Arif质量屋
Arif质量屋 2021年12月16日
评论道: Arif质量屋 2021年12月20日
我有5个垫文件到一个文件夹中。
Battery_Power_280.mat
Battery_Power_300.mat
Battery_Power_320.mat
Battery_Power_340.mat
Battery_Power_360.mat
每次执行循环,它停了下来,没有这样的文件目录(错误:无法读取文件“Battery_Power_1.mat”。没有这样的文件或目录)。
但是它应该运行直到N,如果没有得到“Battery_Power_1”(k = 1),那么它的灵魂去下一步(k = 2)。
请点亮吗?如果(k = 280:20:360)那么它执行成功。但我希望k值(1:1:N)
代码:
N = 500;
C =细胞(1,N);
k = 1:1: N
F = sprintf (Battery_Power_ % d.mat, k);
S =负载(F);
C {k} = S.Data_BatteryPower.signals.values (: 1);
结束
M = [C {}):;

接受的答案

沃斯
沃斯 2021年12月17日
有280 k = 1对应于垫文件,300年k = 2垫对应文件,等等,你可以这样做:
N = 500;
mat_file_nums = 280:20:360;
C =细胞(1,N);
k = 1:1: N
F = sprintf (“Battery_Power_ % d.mat”,mat_file_nums (k));
S =负载(F);
C {k} = S.Data_BatteryPower.signals.values (: 1);
结束
M = [C {}):;
7评论
Arif质量屋
Arif质量屋 2021年12月20日
我预期的解决方案。谢谢 @Benjamin

登录置评。

答案(1)

图像分析
图像分析 2021年12月17日
试试这个:
文件夹= pwd;
filePattern =“电池* .mat”;
文件列表= dir (filePattern);
k = 1:长度(文件列表)
(~,thisFileName ext) = fileparts(文件列表(k) . name);
%可选的用户提示加载垫文件,跳过它,或者放弃。
promptMessage = sprintf (“你想加载文件% d % d: \ n % s, \也退出处理?”,
k,长度(文件列表),thisFileName);
titleBarCaption =“继续?”;
buttonText = questdlg (promptMessage titleBarCaption,“负载”,“退出”,“跳过”,“负载”);
如果包含(buttonText“负载”,“IgnoreCase”,真正的)
流(“\ nLoading“% s”打烊。\ n”thisFileName)
S =加载(thisFileName)
elseif包含(buttonText“退出”,“IgnoreCase”,真正的)
打破;
结束
结束
3评论
图像分析
图像分析 2021年12月17日
@Mohammad Ariful质量屋 它适用于所有垫文件,而不是最后一个。你应该做的是数据读入后是调用某些函数过程年代并返回结果。
如果你愿意,你可以将所有数据保存到一个细胞阵列像沃尔特上面显示(取消隐藏评论)。然后你就需要第二个for循环来处理你的所有数据保存在saved_data单元阵列。我认为这是更好的去做这一切在一个for循环。还有一些其他原因需要循环退出后保存的所有数据吗? ? ?

登录置评。

类别

找到更多的在循环和条件语句帮助中心文件交换

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!