在 matlab 中的 for 循环中堆叠 table 行

Stack table rows within for loop in matlab

我有一个 table T=rand(8,3)。默认选择第一行。如果满足条件,则选择连续的行。

T=rand(8,3)
Tn=T(1,:)
for i=1:size(T,1)
      if sum(T,2)<1.5
          Tn(i,:)=cat(1, Tn, T(i,:))
      end
end

我在堆叠行时遇到错误。尝试了各种方法都没有成功。

解决方案

解决此问题的最佳方法是:

Tn = T(sum(T,2) < 1.5,:)

请注意,该解决方案默认情况下不占用第一行。如果你想让它无论是否满足条件都接受它,使用:

Tn = T([1 ; sum(T(2:end,:),2)] < 1.5,:)

结果

T =

0.8055    0.9787    0.5216
0.5767    0.7127    0.0967
0.1829    0.5005    0.8181
0.2399    0.4711    0.8175
0.8865    0.0596    0.7224
0.0287    0.6820    0.1499
0.4899    0.0424    0.6596
0.1679    0.0714    0.5186

sum(T,2) =

2.3058
1.3861
1.5015
1.5286
1.6686
0.8605
1.1919
0.7580

Tn =

0.5767    0.7127    0.0967
0.0287    0.6820    0.1499
0.4899    0.0424    0.6596
0.1679    0.0714    0.5186

如何使代码工作

要使您的代码正常工作,您需要修正 if 条件和赋值行:

sumT = sum(T,2)
for i=1:size(T,1)
    if sumT(i)<1.5
        Tn = [Tn; T(i,:)];
    end
end