一次在matlab中处理多个数据

时间:2012-10-01 14:26:23

标签: matlab loops

我已将一组50个文件加载到matlab工作空间中。 (从data1data50)。 每个的大小为721*176。我想只提取每个数据的前144行并将其存储在另一个数据中。

例如:

newData1 = data1(1:144,:);

我的问题是:如何使用循环一次处理所有数据?

1 个答案:

答案 0 :(得分:1)

这取决于您存储数据的方式。

您的情况下最好的方法是3D阵列:

首先,分配数组(正如@HighPerformanceMark指出的那样):

data = zeroes(721,176,50);

然后,用值填充它:

data(:,:,1)  =  read('firstFile.bmp');
data(:,:,2)  =  read('secondFile.bmp');
...

data(:,:,50) = ...

在这种情况下,只需使用以下选项:

data(1:144,:,:)

存储数据的另一种可行方法是单元阵列。它非常有用,因为3D数组无法处理不同大小的矩阵。

 data{1} = read('firstFile.bmp');
 data{2} = read('secondFile.bmp');
 ...

在这种情况下,请使用cellfun

 selection = cellfun(@(x) {x(1:144,:)}, data);

如果您仍然坚持将数据存储在单独的变量而不是数组中,则可以使用eval。这是最不推荐的方式。

 for i=1:50
    eval(' selection{i} = data%d',i)
 end