1
在Matlab中,我想用其他值替換某個值。通過邏輯索引給數組賦值不起作用
我知道我能做到這一點:
X(X==0) = -1
如果我想替換0所有出現的1
我有一個包含範圍介於0到9的數字陣列X。我想創建一個新的數組Y,其中Y的第i個值是1,如果X(i)==給定數字,比如5,否則爲-1。所以我寫了一個代碼:
Y = (X == 5);
Y(Y==0) = -1;
第一行工作正常。它將'5'的所有單元格投影到1,否則爲0,因爲它是邏輯運算。然後,如果它是0,我想用-1替換它,但第二行以某種方式使數組的所有值都變爲1.有沒有人知道爲什麼會發生?謝謝!
@beaker那並不是事情 – thewaywewalk
是啊,只是想通了這一點... :) – beaker
我覺得之所以原始方法不起作用的是:當'Y'是'邏輯'數組時,將一個非0或1的值賦給它的一些條目不會使它成爲'雙';它仍然是「邏輯」的。因此,除了'0'之外的所有內容都被轉換爲邏輯「1」('true'),並且'0'被轉換爲邏輯'0'('false')。試試這個例子:'y = true,y(1)= -1' –