[英]Changing the elements of a matrix using a for loop in matlab
我有幾個問題讓MATLAB做我想做的事。
說我有一個矩陣x = [1 2 3 4; 1 4 4 5; 6 4 1 4]
x = [1 2 3 4; 1 4 4 5; 6 4 1 4]
我正在嘗試編寫將遍歷矩陣並將每個4更改為5的代碼,因此它會修改輸入矩陣
我嘗試過幾件事:
while index <= numel(x)
if index == 4
index = 5;
end
index = index + 1;
end
for item = x
if item == 4
item = 5;
end
end
我嘗試過的最簡單的事情就是
for item = x
if item == 4
item = 5;
end
end
我注意到通過查看工作區,項的值確實發生了變化,但x(矩陣)的值保持不變。
如何獲得我正在尋找的輸出?
如果您只想將所有4
秒更改為5
秒,那么:
x(x==4)=5
基本上x==4
將產生一個邏輯矩陣,其中x
為4
,每個都是1
:
[0 0 0 1
0 1 1 0
0 1 0 1]
然后我們使用邏輯索引僅影響那些1
的x
的值,並將它們全部更改為5
秒。
如果你想使用循環(我強烈建議反對)這樣做,那么你可以這樣做:
for index = 1:numel(x)
if x(index) == 4
x(index) = 5;
end
end
簡短的回答,實現你想要的:
x(x==4) = 5
回答為什么你的代碼不符合你的預期:你正在將item
更改為5.但是該項目是一個新變量,它不指向矩陣x
的相同項目。 因此原始矩陣x
保持不變。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.