我有一个表,比如table(12,4),里面有从0到1的随机数,我想把表中每一列的4行相加。然后,我想把结果存储在一个新的3x4表中。在前4个结果之后,我试着计算接下来每列的4行。
为了更清楚,这里有一个例子。
0 0.087913 0 0
0.27561 0.17959 0.24402 0.20616
0.040698 0 0.056478 0.0039007
0.10768 0.25992 0.25992 0.25992
0 0.086466 0 0
0.27469 0.18798 0.25542 0.21579
0.04021 0 0.059588 0.0041156
0.092386 0.22962 0.22962 0.22962
0 0.087532 0 0
0.26506 0.18139 0.24646 0.20822
0.037734 0 0.055918 0.0038621
0.099674 0.24774 0.24774 0.24774
以每列4行之和为例。
第一个结果是0+0. 27561+0. 040698+0. 10768.
第二个结果将是0.087913+0.17959+0+0.2599。
这些结果将被存储在这样一个表中
first result, secondresult, thirdresult, fourthresult
fifth result, sixthresult, seventhresult, eighthresult
nineth result, tenthresult, eleventhresult, twelfthresult
我试着对前4个结果这样做,但我不太清楚如何对每4列动态地做这个。
kkx=zeros(12,4);
kkx=rand(12,4);
[nxx,nyy]=size(kkx);
nxxnew=nxx/4
newtable=zeros(3,4)
for ii=1:nyy
newtable(1,ii)=sum(kkx(1:4,ii));
endfor
你只需要添加第二个for-loop,在行数范围内以4为步长进行迭代。然后你只需要添加两个额外的变量。
rows_ind = 0;
for jj=1:4:nxx
jj_plus_three = jj + 3;
rows_ind += 1;
for ii=1:nyy
newtable(rows_ind,ii)=sum(kkx(jj:jj_plus_three,ii));
endfor
endfor
rows_ind
表示行的数量。newtable
在其中写下下一笔。jj
和 jj_plus_three
将是在列中求和的行的范围。ii
.