使用dlmread读取许多(1000+)个文件 - 使用不同的文件名循环?

时间:2016-11-25 09:11:33

标签: arrays matlab matrix vector vtk

我对matlab很新,或者编码。

我正在运行一个输出数千个文件的模拟。这些文件是.vtk,由dlmread正确读取。

我尝试读取其中一个,将其定义为矩阵并从该矩阵中提取列向量。这很好用。我现在需要的是不仅阅读其中一个,而且阅读所有。文件名因数字而异,例如cover1000.vtk,cover2000.vtk,....,cover1200000.vtk。

我希望所有这些都能用dlmread读取并存储为不同的矩阵。我怎么做?这是我现在所拥有的,一次使用一个文件:

A_1000 = dlmread ('cover1000.vtk') %matrix a containing values from vtk file_in_loadpath

fx_1000 = A(1:20,1) %extracting vector with specific values

fx_ave_1000 = sum(fx_1000)/length(fx_1000) % average of the values in extracted vector

我正在考虑一个循环,但是如何创建一个具有不同文件名的循环? 另外我读过一个循环不是最好的主意,单元格阵列会更好。但我完全不知道如何实现这一点。

感谢您的帮助!
欢呼声

1 个答案:

答案 0 :(得分:4)

您可以使用函数dir列出目录中的所有vtk文件,然后循环遍历这些文件。

filename = dir('*.vtk'); %list all the vtk files in your current directory.

for ii = 1:length(filename)
A = dlmread (filename(ii).name) %matrix a containing values from vtk file_in_loadpath
fx{ii} = A(1:20,1) %extracting vector with specific value
fx_ave{ii} = sum(fx{ii})/length(fx{ii}) % average of the values in extracted vector
end

结果现在存储在两个单元格中:fxfx_ave