簡體   English   中英

在matlab中使用for循環更改矩陣的元素

[英]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將產生一個邏輯矩陣,其中x4 ,每個都是1

[0 0 0 1
 0 1 1 0
 0 1 0 1]

然后我們使用邏輯索引僅影響那些1x的值,並將它們全部更改為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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM