Matlab:通过逻辑索引进行多重赋值

3
我想知道是否有一种方法,根据逻辑向量将多个值分配给不同的变量。
例如:
我有变量a、b、c和逻辑向量l=[1 0 1],以及包含值v的向量,但仅用于a和c。向量v的维度会发生变化,但每次它的大小都与l中true的数量相同。
我只想为a和c分配新值,但b必须保持不变。
有什么想法吗?也许有非常平凡的方法,但我还没有想出来。
非常感谢。

@JacubJon,只是出于好奇,如果我理解你的问题正确的话,你能否检查一下我的解决方案是否也可行呢?因为如果它是无效的解决方案,我宁愿删除它。 - Robert Seifert
@thewaywewalk,我没有尝试过你的解决方案,但我认为我们彼此之间存在误解。如果我将逻辑向量“l”更改为“[0 1 0]”,这意味着我只想为变量“b”分配新值,这意味着向量“v”的维度已经变为1,因为它只包含“b”的新值。现在清楚了吗?谢谢。 - Jakub Jon
1个回答

1
我认为你的问题在于,你以非结构化的方式存储了结构化数据。你假设 a b c 有一个自然顺序,这是非常明显的,但在你的代码中没有被表示出来。
用向量 x 替换 a b c 就变得非常容易了。
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来自不同的来源(结构),我想保持连续性,并以最简单的方式完成。 - Jakub Jon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接