指定のテキストファイルを生成する方法
Mostrar comentarios más antiguos
ある計測装置に取り込むデータ形式として,複素数を以下のように記述されたテキストファイルで生成する必要があります
(10,8)
(9,7)
(8,6)
…
この形式にmatlabで演算されたN×1複素配列を変換してテキストファイルで出力したいのですが、
特殊な文字列を含む形式で出力するはどうしたらいいでしょうか
強引に実部と虚部を分割したN×2の配列を作り、文字列に変換してからファイルを生成するよう組んでみましたが、そのままだとchr型となり、writematrixでテキスト保存すると余計な記号がついてしまいます。
Expdata=sprintf('(%s,%s)\n',data(:,1),data(:,2));
どのようにしたら希望の形式が作れますでしょうか。
Respuesta aceptada
Más respuestas (2)
ひょっとしたらもう少しスマートな方法が有るかも知れませんが....
% データの用意
N = 10;
X = rand(N,1,"like",1i+1);
data(1:N,1) = real(X);
data(1:N,2) = imag(X)
% データ書き込み
formatSpec = "(%s,%s)\n";
fileID = fopen("test1.txt","w"); % 出力ファイルオープン
fprintf(fileID,formatSpec,data(:,1),data(:,2));
fclose(fileID);
type("test1.txt");
こんな感じでどうでしょうか?
1 comentario
Akira Agata
el 21 de Dic. de 2022
Editada: Akira Agata
el 21 de Dic. de 2022
+1
% データの用意
N = 10;
X = rand(N, 1, "like", 1i+1);
% 書き込みたい文字列形式に変換
C = compose("(%e, %e)", real(X), imag(X));
% テキストファイルとして出力
writelines(C, "test2.txt")
osamu
el 26 de Dic. de 2022
0 votos
2 comentarios
Hiro Yoshino
el 26 de Dic. de 2022
Editada: Hiro Yoshino
el 26 de Dic. de 2022
訂正します。こんな風にすれば良いかと:
N = 10;
X = rand(N,1,"like",1i+1);
data(1:N,1) = real(X);
data(1:N,2) = imag(X);
data
C =compose("(%e, %e)",data(:,1),data(:,2))
% ファイル書き出し
fileID = fopen("test1.txt","w");
fprintf(fileID,"%s\n",C);
fclose(fileID);
% ファイルの中身表示
type("test1.txt")
fprintf は行列も引数に取ることができるので、一発でいけます。
osamu
el 27 de Dic. de 2022
Categorías
Más información sobre 低水準ファイル I/O en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!