複素数データのcsvファイルへの出力方法が知りたいです。
Show older comments
信号処理した後のデータを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
on 8 Jan 2020
0 votes
csvwrite 関数や R2019a 以降であれば writematrix 関数での csv ファイルだと、複素数も出力されますがこれはいかがでしょう?
2 Comments
Hideaki Ishii
on 10 Jan 2020
michio
on 10 Jan 2020
そういうことでしたか。。構造体を使い続けるということですと、
struct2table 関数で table 型に変換してから、writetable 関数で csv に書き出すという方法もいけるかもしれません。
Categories
Find more on MATLAB 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!