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

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

 Accepted Answer

Kojiro Saito
Kojiro Saito on 24 Sep 2022

1 vote

出力したいスペクトルデータ(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 Comments

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

Sign in to comment.

More Answers (0)

Categories

Find more on Measurements and Spatial Audio in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!