You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Julia调用mymain函数传入已读取数据集报MethodError是函数还是数据集问题?

问题根因与解决方案

错误原因

mymain 函数设计的第一个入参是存储数据集的文件名字符串,内部已经自带了 readdlm 读取文件的逻辑。你提前手动调用 readdlm 把文件读取成了 Array{Float64,2} 类型的 info 数组,再把这个数组传入 mymain,就会导致函数内部的 readdlm 接收到不支持的数组类输入,触发类型匹配报错。

两种解决方案

  • 方案1(无需修改函数代码,最便捷):删除你提前读取文件的 info = readdlm("DataSet.txt") 代码,直接调用函数即可:
    mymain("DataSet.txt",5)
    
  • 方案2(需要提前处理数据集再传入):修改 mymain 函数的代码,适配数组类型入参:
    1. 把函数定义行改为 function mymain(M,nsamples)
    2. 删除函数内部第一行的 M=readdlm(filename) 代码
    3. 之后就可以正常传入你提前读取的数组:mymain(info,5)

额外注意事项

你贴的函数代码使用的是Julia 0.6及更老版本的语法,其中 ASCIIString、linspace、hist 等API在当前1.x系列Julia版本中已经被废弃,解决当前报错后如果仍然运行失败,需要对应调整为新版本语法:

  • Array(ASCIIString,1,nparams) 替换为 fill("",1,nparams) 或者 Vector{String}(undef, nparams)
  • linspace(a,b,n) 替换为 range(a, b, length=n)
  • 直方图计算需要导入StatsBase包,调用 fit(Histogram, A[:], bx) 实现

内容的提问来源于stack exchange,提问作者Andrés CM

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 14:15:05