2012-03-11 62 views
1

嗨匿名函數好奇的行爲我很好奇,爲什麼我收到MATLAB與倍頻在倍頻和MATLAB

octave:7> pdf = @(x) (0<=x && x<1).* (x) + (1<=x && x <=2).* (2-x); 
octave:8> 
octave:8> t = 0:0.1:1; 
octave:9> 
octave:9> y = pdf(t) 
y = 

    0 0 0 0 0 0 0 0 0 0 0 

octave:10> 

以下行爲我與MATLAB即y中的相同的行爲是零向量。

但是如果我添加以下for循環,

for i=1:size(t,1) 
    y(i) = pdf(t(i)) 
end 

然後我得到正確的結果。

Columns 1 through 19: 

0.00000 0.10000 0.20000 0.30000 0.40000 0.50000 0.60000 0.70000 0.80000 0.90000 1.00000 0.90000 0.80000 0.70000 0.60000 0.50000 0.40000 0.30000 0.20000 

Columns 20 and 21: 

    0.10000 0.00000 

回答

5

&&||是短路運營商,這意味着用於與標量使用。替換爲&|。在Matlab(R2011B)中執行上述(矢量化)代碼時出現錯誤。

&&更換爲&後,它看起來像你期望的那樣工作。