MATLAB Answers

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

5 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);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

  0 Comments

Sign in to comment.

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.

Sign in to answer this question.

Products