2017-06-05 115 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 <1'總是評估爲'false' - 這就是爲什麼你會得到零。 –

回答

2

如果條件不正確。你需要檢查它。你必須像下面那樣繼續。

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