在IJulia中使用PyPlot绘制方法错误

时间:2017-05-12 23:16:22

标签: matplotlib julia ijulia-notebook

我试图在IJulia笔记本上使用PyPlot绘制函数,但我一直在获取错误消息。

当我运行此代码时:

function gtest2(x)
    6.34*(log2(1+exp(10.0*(x+0.5))))^0.8
end

using PyPlot
 x = -1.0:0.1:1.0;
plot(x, gtest2(x));

我遇到了这样的错误:

  

MethodError:没有方法匹配^(:: Array {Float64,1},:: Float64)   最接近的候选者是:^(:: Float64,:: Float64)在math.jl:355 ...

我尝试使用gtest2(x::Number)gtest2(x::Float64)定义我的函数时定义了不同类型的变量,但我有相同的错误。

使用linespace代替-1.0:0.1:1.0也是如此。我理解函数在输入中看到的格式与定义不匹配,但我不知道我做错了,因为简单的函数有效:

function f(x)
    x
end
plot(x,f(x))

为什么我在第一种情况下会收到这些错误?

我在野生动物园使用IJulia笔记本0.5.1。

2 个答案:

答案 0 :(得分:3)

您的代码没有正确处理向量,因此您需要更改gtest 使用.矢量化语法

function gtest2(x)
    6.34*(log2.(1 + exp.(10.0*(x + 0.5)))).^0.8
end

甚至更容易使用点矢量化如下

plot(x, gtest2.(x));

要详细了解点矢量化,请参阅文档中的以下内容:Book of Shaders

答案 1 :(得分:0)

第一个定义也适用于:

map(gtest2, x)

gtest2.(x)