まず、当方について
大学生、音についての研究、swiftでのプログラミングをやっています。
前提・実現したいこと
swiftでの2次元配列の初期化の宣言、配列の要素同士の計算について
現在、swiftで2次元配列を扱って実装しています。実装していく中で先に配列の初期化をやった方が都合が良いと考えたので、2次元での配列の初期化宣言についてお力を借りたいと思っています。また、配列の要素同士の計算が必要な状況ですので、その配列同士の計算についても助言を求めていきたいと思います。
発生している問題①-2次元での配列の初期化宣言
2次元での配列の初期化宣言は?
var buffer:[[Float]] = [[Float]](repeating: [Int](repeating: 0.0, count: nframe),count: 1)
※nframeには6000の値が入っています。
このように初期化すると他のwebでみたので実装してみたが
Type of expression is ambiguous without more contextとエラー表示。
内容が曖昧と怒られてしまいました
発生している問題②-配列同士の計算
let nframe = 6000 var buffer:[[Float]] = Array<Array<Float>>() var buffer2:[Float]! = Array(repeating: 0.0, count: buffer2size) var y: [Float] = Array(repeating: 0.0, count: nframe) for i in 0..<nChannel { for n in 0..<nframe { for k in 0..<buffer2size { y[n] += buffer[i][n - k] * buffer2[k] } } }
nChannelは0(つまり1Channel),nframeは6000,buffer2sizeは600の値が
bufferにはとある値が6000個入っています。buffer2にはとある値が600個入っています。
私がやりたいのは積和演算です。
以上のbuffer,buffer2に格納されている値をかけていき、その600回までループした積の和をy[n]に入れていこうという試みです。
しかし次のようなエラーが発生します。
error: Execution was interrupted, reason: EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0). The process has been left at the point where it was interrupted, use "thread return -x" to return to the state before expression evaluation.
よろしくお願いします。
補足情報(FW/ツールのバージョンなど)
swift5,xcode13.2
回答2件
あなたの回答
tips
プレビュー