Matlab:通过逻辑索引进行多项分配

时间:2013-12-15 23:29:32

标签: matlab indexing variable-assignment

我想知道是否有某种方法,如何根据逻辑向量将值分配给不同的变量。

例如:

我有变量a, b, c和逻辑向量l=[1 0 1]以及值为v的向量,但仅适用于ac。向量v正在改变其维度,但每次都与l中的true数相同。

我想为ac分配新值,但b必须保持不变。

有什么想法吗?也许有非常微不足道的方式,但我没有弄清楚。

非常感谢。

1 个答案:

答案 0 :(得分:1)

我认为您的问题是,您以非结构化方式存储结构化数据。您假设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)