我有一张桌子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
我在堆叠行时遇到错误。尝试了各种方法但没有成功。
答案 0 :(得分:4)
<强>解决方案强>
解决这个问题的最佳方法是:
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