gnuplot - 我的 Octave 函数有什么问题?

标签 gnuplot octave

我只是尝试在 Octave 音阶中创建我的第一个函数,它看起来如下:

function hui(x)
if(0 <= x && x <2)
    retval = (1.5 * x + 2)
elseif(2<= x && x <4)
    retval = (-x + 5)
elseif(4<= x && x < 6)
    retval = (0.5 * x)
elseif(6<= x && x < 8)
    retval = (x - 3)
elseif(8<= x && x <=10)
    retval = (2 * x - 11)
endif
endfunction

但是如果我尝试使用以下方法绘制它:x=0:0.1:10;绘图(x, hui(x));

这表明女巫的情节似乎有点奇怪。 enter image description here

我做错了什么?

提前致谢 约翰

最佳答案

您必须原谅我对软件包的生疏,但您需要稍微更改一下代码。值得注意的是,符号 0<=x不正确,必须是 x>=0 。自 hui正在对向量进行操作,我相信您在构建返回值时需要考虑到这一点。

我确信有更有效的方法来对其进行矢量化,但基本上,在单步输入向量时,我将最新值添加到返回向量上,最后删除我放入的初始 0 .我放入了一个哨兵值,以防输入不满足其中一个条件(它总是采用代码中的“else”路径,因此在那里放置一些内容可能会提醒您出现错误)。

function [retval] = hui(x)
retval = 0
for i=1:size(x,2)
    if(x(i)>=0 && x(i) <2)
         retval = [retval (1.5 * x(i) + 2)];

    elseif( x(i)>=2 && x(i) <4)
         retval = [retval (-1*x(i) + 5)];

    elseif(x(i)>=4 && x(i) < 6)
         retval = [retval (0.5 * x(i))];

    elseif(x(i)>=6 && x(i) < 8)
         retval = [retval (x(i) - 3)];

    elseif(x(i)>=8 && x(i) <=10)
         retval = [retval (2 * x(i) - 11)];

    else
         retval = -999;

    endif

endfor 
    retval = retval(2:size(retval,2));
endfunction

关于gnuplot - 我的 Octave 函数有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6084336/

相关文章:

gnuplot - 正确设置时间的 xrange

octave - Octave 中的符号集成? (需要安装扩展?如何? - 使用 Ubuntu 12.04)

osx-snow-leopard - Octave + gnuplot + os x 10.6 : nothing happens

matlab - 使用 FLTK : Subplots getting smaller and smaller. 进行 Octave 绘图。?

c++ - 使用 C 数组语法将 GNU Octave(或 Matlab)矩阵输出到文件中

fonts - 如何在 gnuplot 创建的 png 文件中添加希腊字符

plot - 如何在 Gnuplot 中跳过二进制文件开头的某些字节?

gnuplot - 如何使用 gnuplot 绘制能量图

java - Gnuplot 和谢尔宾斯基三角

machine-learning - ML - Octave - 正则化 Logistic 回归的梯度函数