• 締切済み

MATLABで次のようなプログラムをfor文で回したいです。

MATLABで次のようなプログラムをfor文で回したいです。 Y = wavread('aaa.wav'); for N = 0:5:360 load(sprintf('SP%03d.dat',N)); eval(sprintf('F%d = SP%03d',N,N)); C = conv((sprintf('F%d',N)),Y); CNAME = sprintf('C%03d.wav',N); wavwrite(C,32000,16,CNAME); end このプログラムだと SP000~SP360をF0~F360へとすることはできるのですが、 そのF0~F360をそれぞれY(aaa.wav)と畳みこむことができません。 どうしたらいいか教えてください。

みんなの回答

回答No.1

C = conv((sprintf('F%d',N)),Y); convに文字列入れても・・・・・。 ↓ eval(sprintf('C = conv(F%d,Y)',N)); matlabとしては効率の悪いプログラムな気がします。 F0~F360へコピーする必要あるんですか? SP000~SP360が元から2次元配列なら、 convはfor文使わずconv2で一発で高速ですね(メモリがあるなら)。 CNAME = sprintf('C%03d.wav',N); wavwrite(C,32000,16,CNAME); はfor文使わないと無理ですね。

関連するQ&A