matlab中的三重循环

时间:2013-11-18 11:24:14

标签: matlab for-loop

我有以下功能

for z=1:dimensions(2) % maximum of z 
   M = [];
   for t=1:dimensions(4) %% maximum of t
      M = [M test.field_data(x,z,y,t)];
   end 
   t = [time]; 
end

我想创建一个矩阵M,它包含每个x y z值的所有field_data值(test.field_data(x,z,y,t),用于指定的t范围。 使用这个for循环,我可以得到每个z数的值,但是如何扩展它以便包含不同的x(x=1:dimensions(1))值和y(y=1:dimensions(3))值?我很难正确设置三重for循环。你能帮帮我吗?

2 个答案:

答案 0 :(得分:2)

您不需要任何for循环。

test.field_data(1:dimensions(1),z,1:dimensions(3),1:dimensions(4))

在您的代码中,M在每次迭代开始时被删除(M=[]

答案 1 :(得分:1)

使用cellfun选择相关的t间隔

c = cellfun( @(x) x.filed_data(:,:,:,t_intrvl), test, 'UniformOutput', false );

cat将单元格放入单个数组M

M = cat( 4, c{:} ); % cat along fourth dim

无论如何,您现在可以reshape M