如何在矩阵中保存文件名以及在Matlab中每次迭代(for-loop)的结果?

时间:2015-12-17 00:42:46

标签: matlab for-loop save filenames

我有一个包含140(* .txt)文件的文件夹,我需要在矩阵中保存这些文件名和for循环中的进程结果。我试过这个:

class= fullfile('*.txt'); 
D = dir(class);

%% for-loop

data=zeros(length(D),2);

for kk=1:length(D);

   blockname = D(kk).name;

    %process > result(kk);

 data(kk,1)=result(kk); 
 data(kk,2)= blockname;

 end

但显示此错误消息

data(kk,2)= blockname; ???订阅的分配维度不匹配。

由于

blockname =

block_100.txt

我不知道如何解决它。谢谢你的帮助

2 个答案:

答案 0 :(得分:0)

在MATLAB中,不能在矩阵中混合数字和字符串。你必须使用单元格这样做。尝试使用{}而不是()编写相同的代码。

data{kk,1} = result(kk);
data{kk,2} = blockname;

答案 1 :(得分:0)

我不知道“过程的结果”是什么意思,但是,你的问题的解决方案之一是

clear all
clc

D = dir('*.txt');
data = cell(length(D), 2);

for kk=1:length(D);

 blockname = D(kk).name;

 %process > result(kk);

 data{kk,1}= kk; %<-- replace kk with whatever you mean by the result of the process
 data{kk,2}= blockname;

end

data

结果是

data =

[1]    'AA.txt'
[2]    'BB.txt'
[3]    'CC.txt'

要访问数据元素,请对第一个元素执行data(1,1),依此类推。

您可以在不使用循环的情况下执行解决方案,因此,另一种解决方案是

clear all
clc

D = dir('*.txt');
data = cell(length(D), 2);

data(:,1) = {1}; %<-- replace 1 with whatever the result of the process is
data(:,2) = {D(:).name};
data 

结果是

data =

[1]    'AA.txt'
[1]    'BB.txt'
[1]    'CC.txt'