複素数データのcsv​ファイルへの出力方法​が知りたいです。

18 views (last 30 days)
Hideaki Ishii
Hideaki Ishii on 7 Jan 2020
Commented: michio on 10 Jan 2020
信号処理した後のデータをCSVファイルに出力したいのですが、実数のみしか認識しません。
下記に、FRFという名前で、構造体のデータを作っています。
加速度センサー数十個のデータを一緒に認識させるために、 FRF(c).name で下記のデータを
ひもづけています。 FRF(c)のcがセンサーの数だけあります。
FRF(c)の.周波数データ、伝達関数(複素数のかたちでデータ保持)、コヒーレンス、
位相これらのデータを、FRFという構造体のデータ作成
%%%%%%%%%%%%%%%%%%%%%%%%%%
FRF(c).name =CHinfo{CH+1,3}; %エクセルファイル読み込んでいるのでCHにさらに+1必要;
FRF(c).f = f;
FRF(c).Txy = Txy;
FRF(c).Cxy = Cxy;
FRF(c).P = P;
%%%%%%%%%%%%%%%%%%%%%%%%%%%
aという名前で、csvに出力しようと試みました。
fprint(fid ここで%fだと実数のみが出力されます。
f は周波数0‐6000Hzまでのデータです。d2はセンサーの名称を格納している番号データです。
この方法だと、構造体からのデータをcsvファイルに書き出しやすいので使っているのですが、
複素数が出力できないので、良い方法があれば教えてください。
%%%%%%%%%%%%%%%%%%%%%%%%%
num=length(f);
fid = fopen('a.csv','w');
for n=1:num+1
for k=1:length(d2)
if n ==1
fprintf(fid,'%s,,,,',FRF(k).name);
else
fprintf(fid,'%f,%f,%f,%f,',FRF(k).f(n-1),FRF(k).Txy(n-1),FRF(k).Cxy(n-1),FRF(k).P(n-1));
end
end
fprintf(fid,'\n');
end
fclose(fid);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Answers (1)

michio
michio on 8 Jan 2020
csvwrite 関数や R2019a 以降であれば writematrix 関数での csv ファイルだと、複素数も出力されますがこれはいかがでしょう?
  2 Comments
Hideaki Ishii
Hideaki Ishii on 10 Jan 2020
回答いただいたのに、連絡が遅くなてすいません。
周波数情報、センサ―情報、伝達関数情報の3次元の構造を持ちたいので、構造体が便利でつかっているのですが。
データの持ち方を過去の手順に固執しており、csvwrite 関数を使ってうまく、データをcsvで一旦保持して、あとで統合する
いい方法が思い当らなかったので、位相情報を、実部と虚部に分けてやろうとしています。
今後使ってみたいと思います。ありがとうございました。
michio
michio on 10 Jan 2020
そういうことでしたか。。構造体を使い続けるということですと、
struct2table 関数で table 型に変換してから、writetable 関数で csv に書き出すという方法もいけるかもしれません。

Sign in to comment.

Categories

Find more on データのインポートと解析 in Help Center and File Exchange

Products

Community Treasure Hunt

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

Start Hunting!