如果我有一个向量,可以说L = [10; 10; 10; 11; 11; 13; 13]与另一个向量相关联X = [1; 6; 65; 34; 21; 73; 14我希望用X中的几乎所有元素创建第三个向量Z,但是当L中的元素(i,j)发生变化时,只需要替换X中的0。让我们说我想要的结果应该看起来像Z = [1; 6; 65; 0; 21; 0; 14]
任何想法如何解决这个问题?
我真的很感激:)。
答案 0 :(得分:1)
这很简单:
X = [1;6;65;34;21;73;14];
L = [10;10;10;11;11;13;13];
Z = X;
ind = [false; diff(L)~=0]; %// logical index of values to be set to 0
Z(ind) = 0;
这可以通过计算发生变更的元素的logical index ind = [false; diff(L)~=0]
来实现。需要初始false
,因为第一个元素没有先前要比较的元素。逻辑索引用于选择Z
的哪些值应设置为0
。
答案 1 :(得分:0)
这应该有效
Z = zeros(length(L))
for i = 2:length(L)
if(L(i-1) == L(i)
Z(i) = X(i);
else
Z(i) = 0;
end
end