2017-06-05 62 views
-1

ベクトルxが与えられたので、xのコンポーネントをチェックしてベクトルu0をコンポーネントワイズに作成したいと思います。 0 <= 0 < 1のみが真で、0xの最初の構成要素であるため、新しいベクトルu0は実際は[1, 0, 0, 0, 0, 0, 0, 0]のように見えますが、Matlabは0というベクトルを与えます。私は何を間違えたのですか?forループの助けを借りてMatlabで新しいベクトルを作成

x = [0, 1, 2, 3, 4, 5, 6, 7, 8]; 
u0 = []; 

for i = 1:8 
    if (0 <= x(i) < 1) 
    u0(i) = 1; 
    else 
    u0(i) = 0; 
    end 
end 
+0

'0 <= xの(I)<1 '(0 <= xの('と等価ですi))<1である。括弧内の式は入力に対して常に 'true'なので、' true <1'は常に 'false'に評価されます。これがゼロを得る理由です。 –

答えて

2

if条件が正しくありません。あなたはそれをチェックする必要があります。以下のように進む必要があります。

x = [0, 1, 2, 3, 4, 5, 6, 7, 8]; 
u0 = zeros(size(x)); 

for i = 1:8 
    if x(i) >= 0 && x(i)<1 
     u0(i) = 1; 
    else 
     u0(i) = 0; 
    end 
end 

また、あなたは、以下の使用して、一列にタスクを取得することができる:

u1 = zeros(size(x)) ; 
u1(x>=0 & x<1) = 1 ; 
+0

ありがとう!あなたは最初のコードは、エラーを提供しています "添え字インデックスは、真の正の整数 または論理のいずれかでなければなりません。 – Julian

+0

MATLAB 2015aでエラーがスローされていません。どのバージョンですか? –

+0

私のMatlabバージョンは2016bです。 – Julian

関連する問題