2013-12-15 93 views
3

我想知道是否有某種方法,如何根據邏輯向量爲不同變量賦值。Matlab:通過邏輯索引進行多項賦值

例如:

我有變數a, b, c和邏輯矢量l=[1 0 1]和矢量與價值v但只是ac。矢量v正在改變它的尺寸,但每次它都有與l中的真實數量相同的尺寸。

我想分配ac的新值,但b必須保持不變。

任何想法?也許有非常微不足道的方法,但我沒有弄明白。

非常感謝。

+0

@JacubJon只是出於好奇,如果我理解你的問題的權利。你能否檢查一下我的解決方案是否也能工作?因爲如果這是一個無效的解決方案,我寧願刪除它。 – thewaywewalk

+0

@thewaywewalk,我沒有嘗試你的解決方案,但我認爲我們彼此不瞭解。如果我將邏輯向量'l'更改爲'[0 1 0]'意味着我想爲變量'b'分配新值,這意味着向量'v'將其維數更改爲1,因爲它僅包含新值'b'..現在清楚了。謝謝 –

回答

1

我認爲你的問題是,你以非結構化的方式存儲結構化數據。您假設abc具有自然順序,這很明顯但未在代碼中表示。

替換abc與向量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) 
+0

謝謝,當然,我可以這樣做,但我的變量a,b,c來自不同的來源(結構),我想保持連續性並以最簡單的方式製作。 –

+0

我用最好的解決方案更新了答案。 – Daniel

+0

+1我要回答同樣的問題 –

相關問題