如何解决为什么函数不匹配调用?
我有一个函数blur_1D(v,l),该函数采用向量v和整数l,并且对于v中的每个值v [i],它将il的均值取为i + l,并将v [i]替换为创建模糊。我的功能没有与电话匹配。这是代码。
function mean(x)
sum = 0.0
for i in 1:length(x)
sum += x[i]
end
return sum / length(x)
end
function extend(v,i)
n = length(v)
if i < 1
return v[1]
elseif i > n
return v[n]
else
return v[i]
end
end
function blur_1D(v,l)
blur_v = zeros(typeof(v[1]),length(v))
for i in 1:length(v)
box = zeros(typeof(v[i]),((2*l)+1))
k = 1
for j in i-l:i+l
box[k] = extend(v,j)
k += 1
end
blur_v[i] = mean(box)
end
return blur_v
end
n = 100
v = rand(n)
begin
colored_line(x::Vector{<:Real}) = Gray.(Float64.((hcat(x)')))
colored_line(x::Any) = nothing
end
colored_line(blur_1D(v))
为什么给我一个错误?
MethodError: no method matching blur_1D(::Array{Float64,1})
Closest candidates are:
blur_1D(::Any,!Matched::Any) at /Users/...
请原谅任何低效,不雅致的代码/语法,但我也欢迎提出有关如何改善这一点的建议。 :)
解决方法
也许您的l
函数中的blur
参数具有一些默认值,并且您通常希望使用单参数版本。
在这种情况下,您应该使用默认值定义函数:
function blur_1D(v,l=0)
顺便说一句,我强烈不建议使用l
作为变量名,因为它很容易被1
(一个)弄错,尤其是当别人读取代码时。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。