arrays - 以编程方式为 DSPSplitComplex 复数创建存储阵列
问题描述
我正在使用 Apple 的 Accelerate 框架。我正在使用 DSPSplitComplex 数字来处理复杂的向量。
我想创建一个过滤器库(过滤器数组)。为此,我遍历一个循环,并使用以下代码将结果添加到我的数组中:
func makeSine(freq:Float, N:Int) -> DSPSplitComplex {
var sreal:[Float] = Array(repeating: 0, count: N)
var simag:[Float] = Array(repeating: 0, count: N)
var compSine = DSPSplitComplex(realp: UnsafeMutablePointer(mutating:sreal), imagp: UnsafeMutablePointer(mutating:simag))
for i in 0..<t.count{
var x = 2 * Float.pi * freq * t[i]
sreal[i] = cos(x)
simag[i] = sin(x)
}
return compSine
}
上面的函数产生一个复杂的正弦波。我用以下方法调用该函数:
var s = makeSine(freq:400.0, N:2048)
我的问题是使用 DSPSplitComplex 我正在创建指向函数中初始化的数组的指针。我无法直接在 Xcode 的调试区域中检查变量 s,但是我使用以下代码实现了这一点:
var inspect:[Float]=[]
for i in 0..<t.count {
inspect.append(s.realp[I])
}
t.count 是过滤器的长度。将此数组的值与在 makeSine 函数中打印的值进行比较,它们都非常不同。因为这只是一个指针,我相信它没有传递实际值,并且这些数组正在被释放。
我的问题是我正在考虑迭代 makeSine(和其他函数)几百次,从而产生数百个 realp 和 imagp 数组。我如何以编程方式处理这些?
解决方案
好的,我实际上比我想象的更早找到了解决这个问题的方法,并发布以帮助他人。
在我班的顶部,我为实部和虚部初始化了单独的数组:
var realSines:[[Float]]=[]
var imagSines:[[Float]]=[]
那么重写的 makeSine 函数是:
func makeSine(freq:Float, N:Int, iteration:Int) -> DSPSplitComplex {
var sreal:[Float] = Array(repeating: 0, count: N)
var simag:[Float] = Array(repeating: 0, count: N)
var compSine = DSPSplitComplex(realp: UnsafeMutablePointer(mutating:sreal), imagp: UnsafeMutablePointer(mutating:simag))
for i in 0..<t.count{
var x = 2 * Float.pi * freq * t[i]
sreal[i] = cos(x)
simag[i] = sin(x)
}
realSines.append(sreal)
imagSines.append(simag)
}
然后每当我想使用 DSPSplitComplex 时,我都会声明它:
var tempSineReal = realSines[iteration]
var tempSineImag = imagSines[iteration]
var tempSine = DSPSplitComplex(realp: UnsafeMutablePointer(mutating:tempSineReal), imagp: UnsafeMutablePointer(mutating: tempSineImag))
推荐阅读
- django - Django - Heroku 上的部署返回与本地主机不同的 HTML
- javascript - 在javascript中覆盖toString函数
- javascript - ChartJS - 如何创建图表?
- javascript - 将数组的对象按键合并为一个对象
- python - 网页中的json2html渲染
- html - 将值从站点传递到 iframe
- ios - 如何使用 Buttons 和 BottomNavigationBar Flutter 进行导航?
- api - 如何在 Julia 中使用 REST API
- python - 将数据框减少到仅已更改的行
- java - 保存模型类的对象的顺序是什么?