Octave: 将行数相加后,将一个表拆成子表。

问题描述 投票:1回答:1

我有一个表,比如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
octave
1个回答
0
投票

你只需要添加第二个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 在其中写下下一笔。jjjj_plus_three 将是在列中求和的行的范围。ii.

© www.soinside.com 2019 - 2024. All rights reserved.