【问题标题】:Plotting Method error using PyPlot in IJulia在 IJulia 中使用 PyPlot 绘制方法错误
【发布时间】:2017-05-12 23:16:22
【问题描述】:

我正在尝试在 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) at 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))

为什么在第一种情况下会出现这些错误?

我在 safari 上使用 IJulia notebook 0.5.1。

【问题讨论】:

    标签: matplotlib julia ijulia-notebook


    【解决方案1】:

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

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

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

    plot(x, gtest2.(x));
    

    要了解有关点矢量化的更多信息,请参阅文档中的以下内容:https://docs.julialang.org/en/latest/manual/functions.html#man-vectorized-1

    【讨论】:

    • 完美运行!我会阅读建议的页面,谢谢!
    【解决方案2】:

    第一个定义也适用于:

    map(gtest2, x)
    

    gtest2.(x)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-01
      • 1970-01-01
      • 2017-03-30
      • 2011-07-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多