2016-05-06 7 views
1

ベクトルがある場合、別のベクトルに関連付けられたL = [10; 10; 10; 11; 11; 13; 13]と言うことができます。 34; 21; 73; 14]と私は、Xのほとんどすべての要素を持つが、Lの要素(i、j)が変化するときXの0を置き換えるだけで、第3のベクトルZを作成したい。私が望む結果がZ = [1; 6; 65; 0; 21; 0; 14]ベクトルからいくつかの要素を置き換えるMATLAB

どのように解決するか考えてみましょう。

私は本当に感謝するでしょう:)

答えて

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 indexind = [false; diff(L)~=0]を計算することによって動作します。最初の要素に比較する前の要素がないため、最初にfalseが必要です。論理インデックスは、Zのどの値を0に設定するかを選択するために使用されます。

+0

、おかげでルイスを動作するはずです! – angelavtc

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 
関連する問題