【问题标题】:Some Julia packages support data having Float64 (single) format, bur I have data of having Float64 (dubble) format一些 Julia 包支持 Float64(单)格式的数据,但我有 Float64(双)格式的数据
【发布时间】:2019-08-21 07:01:28
【问题描述】:

Julia 音频读取包 WAV 以双精度生成数据。如果我想在输入数据类型为单精度数据的其他包中使用这些数据,则会显示错误。我的目标是维护一种精度数据类型,以便所有函数都支持该格式。

我已尝试更改 WAV 读取输出的格式。我无法改变它。

现在我想知道如何更改名为 TimeseriesSurrogate 的包中所需的数据类型。

shuffled_data=TimeseriesSurrogates.randomshuffle(amp_env)

我希望得到一个随机打乱的数据。它显示以下错误消息。

MethodError: 没有方法匹配 randomshuffle(::Array{Float64,2}) 最接近的候选人是: /home/rabindev/.julia/packages/TimeseriesSurrogates/Lofe0/src/uncertaindatasets.jl:15 的随机洗牌(!Matched::UncertainData.UncertainDatasets.UncertainIndexDataset) /home/rabindev/.julia/packages/TimeseriesSurrogates/Lofe0/src/uncertaindatasets.jl:9 的随机洗牌(!Matched::UncertainData.UncertainDatasets.UncertainValueDataset) /home/rabindev/.julia/packages/TimeseriesSurrogates/Lofe0/src/uncertaindatasets.jl:3 的随机洗牌(!Matched::UncertainData.UncertainDatasets.UncertainDataset) ...

堆栈跟踪: [1] In[122]:2 的顶级范围

【问题讨论】:

标签: julia


【解决方案1】:

据我对 Julia 的了解,它不存在 Float64(single) 与 Float64(double) 精度,只有 Float64(或 Float32)。

如果您使用 ccall 与 C 库交互,则映射规则为 C float -> Julia Float32 和 C double -> Float64

在 Julia 中,您可以使用 convert(T,x) 转换两者,尽管它不应该是必需的:

a = 0.5
typeof(a) # Float64 by default
b = convert(Float32,a)
typeof(b) # Now it is a Float32

编辑: 在您的情况下,问题似乎是 randomshuffle 需要一个向量作为参数 (Array{T,1}),而您正在为其提供一个矩阵 (Array{T,2})。

你可以看到函数randomshufflemethods(randomshuffle)提供的方法,第4个结果是:

randomshuffle(ts::AbstractArray{T,1} where T)

【讨论】:

  • 谢谢你,安东内洛。我创建了一个函数,我在其中输入(Float64,2)。该函数将该数组的每个元素转换为所需的可用精度并将其存储在数组中(预定义类型)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-07
  • 2018-01-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多