[英]Matlab: how do I compare the values of two different matrices without using a for loop?
[英]How do I use a for loop in Matlab to select rows where the values are different between two columns?
這是我來自 Matlab 輸出的數據;
a Aerobic Anaerobic
'Ex_Cl' -0.00775597205802433 -0.00775597205802011
'Ex_Sulfate' -0.100000000000000 -0.100000000000000
'Ex_Cu2+' -0.00517064803868288 -0.00517064803868008
'Ex_Mg' -0.0129249011312688 -0.0129249011312618
'Ex_Ca2+' -0.00775597205802433 -0.00775597205802011
'Ex_NH3' 0 4.24088035850684
'Ex_H2O' -10 -10
'Ex_Biomass' 1.71896543839192 1.71896543839098
'Ex_Butyrate' 0 0
共有 184 行。 col 名稱分別為 a、Aerobic 和 Anaerobic。
我正在嘗試創建一個 for 循環來選擇有氧和無氧之間不同的代謝物,並且也只是積極的。
該表由 d=table(a, Aerobic, Anaerobic) 形成。 這是我嘗試獲取僅包含不同有氧和無氧正值的新表的代碼。
j=1
for i=1 : height (d)
if (b(i) ~= c(i))
difExc(j, 1:3) = d(i, 1:3)
j=j+1
else
continue;
end
end
然后我想創建一個新表
difExc=table(a, Aerobic, Anaerobic)
我有不同的一點,但我不確定如何調整代碼以說只選擇那些在有氧和無氧之間是積極的和不同的。
任何幫助,將不勝感激。
謝謝
您可以使用邏輯索引來查找不同的值。 這是我使用的數據
a = [...
"Ex_Cl"
"Ex_Sulfate"
"Ex_Cu2+"
"Ex_Mg"
"Ex_Ca2+"
"Ex_NH3"
"Ex_H2O"
"Ex_Biomass"
"Ex_Butyrate"];
Aerobic = [ ...
-0.00775597205802433
-0.100000000000000
-0.00517064803868288
-0.0129249011312688
-0.00775597205802433
0
-10
1.71896543839192
0];
Anaerobic = [ ...
-0.00775597205802011
-0.100000000000000
-0.00517064803868008
-0.0129249011312618
-0.00775597205802011
4.24088035850684
-10
1.71896543839098
0];
這是發現差異:
different = Aerobic ~= Anaerobic;
T = table(a(different), Aerobic(different), Anaerobic(different))
結果
T =
6×3 table
Var1 Var2 Var3
____________ __________ __________
"Ex_Cl" -0.007756 -0.007756
"Ex_Cu2+" -0.0051706 -0.0051706
"Ex_Mg" -0.012925 -0.012925
"Ex_Ca2+" -0.007756 -0.007756
"Ex_NH3" 0 4.2409
"Ex_Biomass" 1.719 1.719
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.