您好我很好奇为什么我使用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
答案 0 :(得分:5)
&&
和||
是短路运算符,用于标量。替换为&
或|
。在Matlab(R2011B)中执行上述(矢量化)代码时出错。
将&&
替换为&
后,它似乎按预期工作。