用于MATLAB中列数据处理的嵌套循环

我有大小(4097,100)100列xlsx文件。 我需要读取第一列并进行一些处理,并且这仅导致第一列数据的四个行variables(每个为1,4097)。 此外,我需要处理这四个行variables中的每一个,以获得其统计参数,如MATLAB中的最小值,最大值,平均值,标清,variables。 如何做到嵌套for循环? 我感谢您的帮助。 我正在尝试的示例MATLAB代码是我已经考虑只有两列A1和A2:

A = xlsread('S.xlsx'); num_rows = size(A,1); num_cols = size(A,2); A1 = A (:,1); A2 = A (:,2); B = {A1,A2}; for i = 1:2 for j = 1:4 IMF = emd(B{i},'STOP',[0.1,0.5,0.05],'MAXITERATIONS',100); I1 = IMF (1,:); I2 = IMF (2,:); I3 = IMF (3,:); I4 = IMF (4,:); imf = {I1, I2, I3, I4}; m1(j) = mean(imf{j}); m2(j) = min(imf{j}); m3(j) = max(imf{j}); m4(j) = std(imf{j}); m5(j) = var(imf{j}); end end 

我试过的代码中的另一个变体是:

 A = xlsread('S.xlsx'); num_rows = size(A,1); num_cols = size(A,2); A1 = A (:,1); A2 = A (:,2); B = {A1,A2}; for i = 1:2 IMF = emd(B{i},'STOP',[0.1,0.5,0.05],'MAXITERATIONS',100); I1 = IMF (1,:); I2 = IMF (2,:); I3 = IMF (3,:); I4 = IMF (4,:); imf = {I1, I2, I3, I4}; for j = 1:4 m1(j) = mean(imf{j}); m2(j) = min(imf{j}); m3(j) = max(imf{j}); m4(j) = std(imf{j}); m5(j) = var(imf{j}); end end 

但没有成功。 我只获得第一列的统计值,即I1,I2,I3和I4的四个值。 第二列A2没有被处理。

我认为问题是你覆盖你的结果。 您可以使用Matlabdebugging器一步一步地运行您的代码来检查到底发生了什么。

 A = xlsread('S.xlsx'); m1 = zeros(2, 4); m2 = zeros(2, 4); m3 = zeros(2, 4); m4 = zeros(2, 4); m5 = zeros(2, 4); for i = 1:2 IMF = emd(A(:, 1),'STOP',[0.1,0.5,0.05],'MAXITERATIONS',100); m1(i, :) = mean(IMF, 2); m2(i, :) = min(IMF, [], 2); m3(i, :) = max(IMF, [], 2); m4(i, :) = std(IMF, 0, 2); m5(i, :) = var(IMF, 0, 2); end 

请注意,我删除了一些临时variables,避免了嵌套循环,并预先分配了循环外部的variables。 这可能会缩短执行时间。