Octave和MATLAB中匿名函数的奇怪行为

时间:2012-03-11 06:13:39

标签: matlab octave

您好我很好奇为什么我使用MATLAB和Octave

获得以下行为
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 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

1 个答案:

答案 0 :(得分:5)

&&||是短路运算符,用于标量。替换为&|。在Matlab(R2011B)中执行上述(矢量化)代码时出错。

&&替换为&后,它似乎按预期工作。