Matlab循环遍历文件而不合并csv

时间:2019-03-04 14:21:19

标签: matlab loops csv

抱歉,这与“ Loop through files in a folder in matlab”相似,在这里我已经获得了一些代码,但是我遇到了与此代码有关的问题。

我有很多csv文件,我需要循环并组合成一个长的csv / matrix进行分析,因此我正在使用代码

files = dir('*.csv'); % Get all input files

for file=files' % loop over files
    csv = csvread(file.name); %get data points
    signal = csv(:,2);
end

我发现的问题是,这似乎仅从第一个文件中获取数据。如:
file1 = [1 2 3]; file2 = [4 5 6];

我得到信号= 1 2 3,而不是1 2 3 4 56。

因此,好像循环没有从第一个文件继续进行,但是我认为for循环被迫继续进行,因此感到困惑。

TIA

2 个答案:

答案 0 :(得分:2)

您只需要遍历文件struct

files = dir('*.csv'); % Get all input files
N = numel( files );
signal = cell( N, 1 ); % preallocate output

for ifile = 1:N % loop over files
    csv = csvread( file(ifile).name ); % get data points
    signal{ifile} = csv(:,2);          % store output
end

然后,如果您要对它们进行操作,则可以将所有结果合并在一起

signal = vertcat( signal{:} );

答案 1 :(得分:0)

我到底到了那里

files = dir('*.csv'); % Get all input files
L = length(files);

csv = csvread(files(1).name);
signal = csv(:,2);

for i = 2:L
   csv = csvread(files(i).name);
   %Did stuff with code
end