如何在矩阵中保存文件名并在 Matlab 中保存每次迭代(for 循环)的结果?

How can I save a file name in a matrix and the result on each iteration (for-loop) in Matlab?

我有一个包含 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)= 区块名; ???下标赋值维度不匹配。

因为

块名=

block_100.txt

我不知道怎么解决。感谢您的帮助

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

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

我不知道你所说的 "the result of the process" 是什么意思,但是,你的问题的解决方案之一是

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

结果是

数据=

[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 

结果是

数据=

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