八度图不能正常工作

时间:2014-09-21 00:14:57

标签: matlab octave

CODE DELETED

嗨,上面的代码是我的(略微修改过的)rooo.m文件。 我只是试图通过键入(octave)终端

来绘制函数
x = 1:1:40;
plot(x, rooo(x), '+');

但这只会打印y = 1的图表。 我相信它是因为y = 1;在第一行(顺便说一下,函数本身返回正确的值,比如当我输入rooo(3)时)。 当我将其更改为其他数字(例如b)时,图表将显示y = b。

有没有人知道为什么会发生这种情况?

2 个答案:

答案 0 :(得分:1)

它不起作用,因为你永远不会从{1}开始输入while循环。从

开始

x在开始时为false,函数返回。

然而,当你打电话给rooo(3)或实际上rooo(任何> 1)它确实有效。当x = 1.1:1:40时,情节看起来像这样(我用Matlab制作):

enter image description here

答案 1 :(得分:1)

我认为它不起作用,因为如果在命令行键入rooo(x),它将返回标量结果1,而不是向量。当1 < n是向量时,n逻辑条件不会按预期工作。

这是一个让它工作的建议(也许不是最优雅但似乎有效):

CODE DELETED

当您在问题中调用时,会给出以下情节

enter image description here

结果似乎与MATLAB中报告的结果不同。

另一种方法是,如果您不想修改自己的功能,可以改变调用方式:

>> x = 1:1:40;
>> y = ones(size(x));
>> for k=1:length(x)
y(k) = rooo(x(k));
end
>> plot(x,y,'+')

这给出了与上述建议相同的结果。