MATLABファイル名書き出し方法について

このQ&Aのポイント
  • MATLAB初心者の方が指定した持続時間と周波数をもつ音を作成し、aiffファイルに書き出す方法について教えてください。
  • 関数create(t,f)を使用して持続時間3秒、周波数440Hzの音を作成することができます。
  • ファイル名に引数の数値を反映させるためには、sprintf関数を使用する必要があります。具体的な書き方について教えてください。
回答を見る
  • ベストアンサー

MATLAB ファイル名書き出しについて

MATLABかなりの初心者です。 指定した持続時間、周波数をもつ音をつくり、 それをaiffファイルに書き出すという関数をつくりました。 関数は、 create(t,f) このように複数の引数をもっています。 create(3,440) こうすると、持続時間3s,440Hzの音がつくれるようにしました。 (この関数自体はきちんと動作しています。) このとき、 3_440.aif というふうに、ファイル名に引数の数値を反映させたいのですが、 sprintf( … ) この中身をどう書けばよいのかわからず困っています。 稚拙な質問かもしれませんが、教えていただければありがたいです。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • m0r1_2006
  • ベストアンサー率36% (169/464)
回答No.1

sprintf では無理, >> aa = 3; >> bb = 440; >> fname = [num2str(aa), '_', num2str(bb), '.aif'] fname = 3_440.aif として, fileID = fopen(fname, 'w'); とすれば,ファイル名 3_440.aif のバイナリ書き込みファイルが作れるが, aiff のヘッダーとかは,どうするのか? 音声ファイルの書き込み関数あるはずだから,それを使った方が賢いと思う.

lemonsorbet
質問者

お礼

ご回答いただきどうもありがとうございました。 音声ファイルの書き込みでは、aiffwriteを使っています。 教えていただいた fname = [num2str(aa), '_', num2str(bb), '.aif'] で無事につくりたかった名前の音声ファイルをつくることができました。 どうもありがとうございました。

関連するQ&A

  • MATLABについてお聞きしたいです。

    MATLABについてお聞きしたいです。 現在勉強しているのですが、プログラミング初心者なので…。 MATLABでwavファイルの書き込みについてです。 周波数1000Hz, 0.5秒,サンプリング周波数22050Hz の設定にしてwavファイルで保存したく… f=1000; > A=0.5; > Fs=22050; > wavwrite(MyFunc_2(1000,0.5,22050),'sin1000'); という設定にして、保存したのですが、録音時に流れた音と録音された音が違うのです。 ファンクションMファイルは… function y=MyFunc_2(f,A,Fs) %Fs=44100; d=1/Fs; t=0:d:2; %f=440; %A=0.1; y=A*sin(2*pi*f*t); wavplay(y,Fs) このような設定にしています。 問題解決への協力よろしくお願いします。

  • ホームページでaifの音が鳴らない

    ホームページ形式(HTML形式)で画像に音を入れて、画像を見ながら音楽を鳴らして楽しんでいます。 音声はwavファイルと、aifファイルの2種類を入れましたが、WindowsXPのパソコン(IE6)では両方とも鳴るのに、98SEのパソコン(IE5.5SP2)ではaifの音が鳴りません。どちらもWindowsMediaPlayerが入っており、AIFF形式サウンドにはチェックをいれているので、AIFファイルを単独で鳴らせば、98SEでも鳴ります。 ホームページ形式に組み込んだAIF音を98パソコンで鳴らすにはどうしたらよいかお教えください。

  • 周波数が分かるVSTソフトを探しています

    フリーのVSTソフトで周波数が数値的に分かるスペクトルアナライザーを探しています。 ノートオンして発している音が何Hzなのかが分かるスペアナを探しています。 例えばラの基準音420Hzを出したいのだけど、ピアノロールで言うA4なのかA5なのか分からないので、こういった周波数の数値が分かるスペアナを探しています。周波数の数値が分かるシンセである程度自由度があればいいです。 とにかく今発している音が何Hzなのかが分かればいいのです。 ご存知の方がございましたら、ぜひご教授ください。

  • 拍手の間隔を解析で求めるには?

    等間隔で発生している衝撃音の間隔を、解析的に求めることはできるでしょうか?たとえば、拍手をしている周期であったり、太鼓を叩いている周期を演算で求めたいと思っています。もちろん、時間波形の間隔から周期を読み取ることはできますが、より周波数解析的な手法で求まらないかと考えています。音をPCに取り込んでFFT解析を行っても、拍手や太鼓一発の音そのものの周波数(数1000Hz)は算出されても、叩いている間隔(数Hz~10数Hz)は算出されません。FFT点数やウインドウ関数などをいろいろと変えてみましたが、結果は同じでした。ノイズはほとんどないものと仮定して結構です。どなたか教えていただけないでしょうか?

  • MATLAB(再生している音の周波数をリアルタイムで変更したい)

    MATLAB(R2008a)を利用しています。 sin関数で作成した正弦波をwavplay関数やaudioplayer・play関数で再生しているのですが、再生中に正弦波の周波数をキーボードからの入力にあわせて滑らかに変更したいと思っています。 どのような方法があるのでしょうか。 audioplayerで作った音をstopで一度とめて、違う周波数の正弦波をすぐにplayで再生しようと思っても間に少し空白の時間ができてしまって困っております。 お知恵いただけると助かります。

  • MATLABによるアニメーション

    現在、数値流体解析を行っており、その結果を3次元のアニメーションをしたいと考えています。アニメーションさせる方法としてMATLABを考えいるのですがなかなか思うように行きません。そこで、以下の質問があります。 (1):アニメーションの為の3次元のデータファイルはどのような配列で   ファイルに格納しなければならないのか。 (2):データファイルには、ある時間ステップごとのデータがあるのですが   このデータをどのようにMATLABに読み込ませれば良いのか((1)にも関係が  あるかも) (3):アニメーションの為の必要な関数、定義は何か 以上の3つなのですが、もしMATLABによるアニメーションの良い例などがどこかのホームページなどにあれば教えていただけるとありがたいです。 分かりにくい文章で申し訳ありませんがよろしくお願いします。

  • オーディオファイル作成まで?

    標準的なCDは標本化周波数44100Hz及び量子化ビット数16ビットでデジタル化されています。この品質で音を取り込むと、モノラルの場合10秒当たり何バイトのオーディオファイルが作れますか?計算の仕方を教えてください!!

  • ピアノソロの周波数分析

    Adobe Auditionというソフトの周波数分析機能を用いて、ピアノソロの曲(wavファイル)の周波数を見ていたのですが 20Hz~20000Hzくらいまでまんべんなく音が出ているようでした しかし、88鍵ピアノの周波数帯域は、だいたい27.5Hz~4100Hzくらいのはずだったと思います なぜこれよりも広い帯域の音が検出されるのでしょうか? ソフトがおかしいのかと思い同じ曲のmp3ファイル(190kbps)で確認してみたところ 18000Hz付近で急激な減衰が確認できたのでソフトがおかしい訳ではなさそうです この原因がわかる方がいましたら教えて頂けませんでしょうか また、このソフトの周波数分析機能=スペクトラムアナライザと解釈してもよいのでしょうか こちらも教えて頂ければ幸いです

  • 騒音に関して(低周波音?)教えてください。

    低周波騒音について教えてください 現在、隣の牛乳販売店と騒音問題で協議中です。 騒音源となっているのは冷凍庫内のファンと思われます。 24時間不快な低く響く音がして頭痛、吐き気、眩暈という症状に加え、睡眠障害になり大変辛い毎日を過ごしています。 音としては「ブーンブーン」とか「ブンブン」と言う風に耳で聞き取れますが、直接頭に響いてくる様な感じです。 耳栓をしても、音楽プレーヤーで音楽を聴いていても聞こえます、というか感じます。 騒音との因果関係ですが、自宅から離れると症状がなくなり、測定や工事で冷凍庫の稼動を一時的に止めた時は症状が消えました。稼動し始めるとまた具合が悪くなります。明らかに騒音源と連動しています。 先方も対策はする、と言い続けてもうすぐ半年です。市役所にも間に入ってもらってますが進展はありません。 先方が騒音測定を実施し、周波数解析をした結果、100Hzにピークが出ている事が分かりました。 どうもその辺りが私の体調不良や睡眠障害の原因と思われます。 一般的に100Hz以下を低周波音と定義しているの様ですが、低周波の測定は80Hzまでしか行いませんでした。 定義からいえば100Hzまでは低周波音と区別され、測定もされるはずだと思うのですが、どうしてなんでしょうか? 80Hzまでは物質的・精神的な苦情に係る参照値というのが決められているのですが、いずれもその値を下回っています。 騒音に対する個人差もあるとは思いますが、100Hz帯での苦情が出る数値というものが分かりません。 低周波音であれば法的に規制対象外ですので、参考のために数値を知りたいです。 以前山梨県で低周波騒音に関する裁判が行われたようですが、詳細を調べる事が出来ませんでした。 あるHPでは「苦情者の居間付近において、100Hzで30db以下にするように」という一審判決が出されたという事が書いてありました。 ちなみに我が家で測定した結果、100Hzで40dbはありました。 80Hzで精神的に苦情が出る参照値は41dbなので100Hzではどうかな(参照値があったら超えているんじゃないの?)・・・と思っているのですが。

  • バッチファイルから直接db2コマンドに引数を持たせて実行したい

    バッチファイルより、得たデータを引数としてdb2コマンドに私、実行したいのですが、そのようなことはできるでしょうか。 (詳細) バッチファイルで、日付&時間を変数に格納します。これを、db2のテーブルにインポートしたい。 稚拙な質問で申し訳ありません。

専門家に質問してみよう