指定のテキストファイルを生成する方法
Afficher commentaires plus anciens
ある計測装置に取り込むデータ形式として,複素数を以下のように記述されたテキストファイルで生成する必要があります
(10,8)
(9,7)
(8,6)
…
この形式にmatlabで演算されたN×1複素配列を変換してテキストファイルで出力したいのですが、
特殊な文字列を含む形式で出力するはどうしたらいいでしょうか
強引に実部と虚部を分割したN×2の配列を作り、文字列に変換してからファイルを生成するよう組んでみましたが、そのままだとchr型となり、writematrixでテキスト保存すると余計な記号がついてしまいます。
Expdata=sprintf('(%s,%s)\n',data(:,1),data(:,2));
どのようにしたら希望の形式が作れますでしょうか。
Réponse acceptée
Plus de réponses (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 commentaire
Akira Agata
le 21 Déc 2022
Modifié(e) : Akira Agata
le 21 Déc 2022
+1
% データの用意
N = 10;
X = rand(N, 1, "like", 1i+1);
% 書き込みたい文字列形式に変換
C = compose("(%e, %e)", real(X), imag(X));
% テキストファイルとして出力
writelines(C, "test2.txt")
osamu
le 26 Déc 2022
0 votes
2 commentaires
Hiro Yoshino
le 26 Déc 2022
Modifié(e) : Hiro Yoshino
le 26 Déc 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
le 27 Déc 2022
Catégories
En savoir plus sur テキスト ファイル dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!