我想知道是否有某種方法,如何根據邏輯向量爲不同變量賦值。Matlab:通過邏輯索引進行多項賦值
例如:
我有變數a, b, c
和邏輯矢量l=[1 0 1]
和矢量與價值v
但只是a
和c
。矢量v
正在改變它的尺寸,但每次它都有與l
中的真實數量相同的尺寸。
我想分配a
和c
的新值,但b
必須保持不變。
任何想法?也許有非常微不足道的方法,但我沒有弄明白。
非常感謝。
我想知道是否有某種方法,如何根據邏輯向量爲不同變量賦值。Matlab:通過邏輯索引進行多項賦值
例如:
我有變數a, b, c
和邏輯矢量l=[1 0 1]
和矢量與價值v
但只是a
和c
。矢量v
正在改變它的尺寸,但每次它都有與l
中的真實數量相同的尺寸。
我想分配a
和c
的新值,但b
必須保持不變。
任何想法?也許有非常微不足道的方法,但我沒有弄明白。
非常感謝。
我認爲你的問題是,你以非結構化的方式存儲結構化數據。您假設a
b
c
具有自然順序,這很明顯但未在代碼中表示。
替換a
b
c
與向量x
使它成爲一項非常簡單的任務。
x(l)=v(l);
假設你要保持你的變量名,我知道最簡單的可能性將是寫一個函數:
function varargout=update(l,v,varargin)
varargout=varargin;
l=logical(l);
varargout{l}=v(l);
end
用法是:
[a,b,c]=update(l,v,a,b,c)
謝謝,當然,我可以這樣做,但我的變量a,b,c來自不同的來源(結構),我想保持連續性並以最簡單的方式製作。 –
我用最好的解決方案更新了答案。 – Daniel
+1我要回答同樣的問題 –
@JacubJon只是出於好奇,如果我理解你的問題的權利。你能否檢查一下我的解決方案是否也能工作?因爲如果這是一個無效的解決方案,我寧願刪除它。 – thewaywewalk
@thewaywewalk,我沒有嘗試你的解決方案,但我認爲我們彼此不瞭解。如果我將邏輯向量'l'更改爲'[0 1 0]'意味着我想爲變量'b'分配新值,這意味着向量'v'將其維數更改爲1,因爲它僅包含新值'b'..現在清楚了。謝謝 –