1

有人可以帮我解决 Matlab 中的以下问题吗?我有一个包含元素值的第一个向量。例如,

[2 8 4 9 3]. 

第二个带有所需位置的第二个向量。例如,

[0 0 1 0 0 0 0 1 1 0 0 1 0 0 1]. 

现在我想将第一个向量中的值放在第二个向量的位置上以结束

[0 0 2 0 0 0 0 8 4 0 0 9 0 0 3]. 

当向量的大小可能非常大时,最有效的方法是什么。(然后是数千个元素)?

4

2 回答 2

6

您可以将 y 值视为逻辑指标,然后使用逻辑索引将这些值设置为 x 中的值。

x = [2 8 4 9 3];
y =  [0 0 1 0 0 0 0 1 1 0 0 1 0 0 1];
y(logical(y)) = x;

或者,您可以使用

y(y==1) = x;
于 2013-10-21T07:26:14.547 回答
5

使用自索引:

% Your values:
V = [2 8 4 9 3];

% The desired locations of these values:
inds = [0 0 1 0 0 0 0 1 1 0 0 1 0 0 1];

% index the indices and assign
inds(inds>0) = V
于 2013-10-21T07:26:39.653 回答