リアルタイムで取り込​​んだ音声信号をFF​T​化を行ったデータ​をcsvに保存する方​法​を教えてほしいで​す。

リアルタイムにて音声を入力を行い、timescopeを用いて波形を表示させ、SpectrumAnalyzerを使いスペクトルを表示させるプログラムをAudio Test Bench をもちいて作成しました。(SpectrumAnalyzerを最新のものに入れ替える)
そして、スペクトルのデータをmat保存しました。(ピーク時のデータのみ)ここまでのプログラミングを載せておきます。
理想的には上記のようなものを作成したいと考えております。
matファイルではなくcsvファイルにて保存の方法をご教授お願います。簡単な内容で申し訳ありませんがよろしくお願いします。

 採用された回答

Kojiro Saito
Kojiro Saito 2022 年 9 月 24 日

1 投票

出力したいスペクトルデータ(data)がテーブル型なので、CSVへのファイル保存は相性が良いです。
PeakFinder列が構造体(struct)になっていて、このまま書き込むと列が空になってしまうので、下記のように一旦構造体をセルにしてから格納し直してCSVに出力できます。
%save data.mat
% ←最後にdataをMATファイルに保存
% PeakFinderの構造体をセルに変換
tempTable = struct2cell(data.PeakFinder)';
% 元のデータに格納
data.PeakFinderFrequency = tempTable(:, 1);
data.PeakFinderValue = tempTable(:, 2);
% 元のPeakFinder列を削除
data.PeakFinder = [];
% CSVで書き込み
writetable(data, 'data.csv')

6 件のコメント

一秀 近藤
一秀 近藤 2022 年 9 月 28 日
ご回答ありがとうございます。
csvでの保存はできるようになりました。ありがとうございます。
しかし、一つのプログラミング上では保存することができずに先にスペクトルデータをmatファイルに入力してからでないとcsvに出力できませんでした。一つにまとめるにはどうすればよいでしょうか?
Kojiro Saito
Kojiro Saito 2022 年 9 月 28 日
「一つのプログラミング上では保存することができずに先にスペクトルデータをmatファイルに入力してからでないとcsvに出力できませんでした」の部分がすみませんがよく理解できません。
realtimeFFTsave9gatu20.mlxとは別のコードにCSV出力を入れたということでしょうか?
一秀 近藤
一秀 近藤 2022 年 9 月 29 日
書き方が悪く申し訳ございません。その認識であっております。
一秀 近藤
一秀 近藤 2022 年 9 月 29 日
realtimeFFTsave9gatu20.mlxのコードの続きに導入させていただいたのですが、プログラムがmatファイルに保存までは作動するのですが、その後のPeakFinderの構造体をセルに変換か実行されないです。
Kojiro Saito
Kojiro Saito 2022 年 9 月 29 日
こちらの環境ではエラーが再現できないので、保存されるdata.matのファイルを共有いただくことは可能でしょうか?
一秀 近藤
一秀 近藤 2022 年 9 月 30 日
すいません。僕の確認不足でcsv保存できていました。
理由といたしまして私が勝手にプログラムを中断してしまっていたことが理由であろうと思います。
ご丁寧にありがとうございます。

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeMeasurements and Spatial Audio についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!