数値と文字が含まれるcell配列をdatファイルとして出力する際に、文字は””をつけ、数値には前後に何もつけないようにするにはどうすればいいですか?
Show older comments
cell配列の出力に関する質問です。
下記のようなサンプルdatファイルをcell配列で読み込み、6、9行目を書き換えた後、新たなdatファイルとして保存したいと考えています。
datファイルを読み込み、6,9行目を書き換えることはできたのですが、cell配列の中身がすべて文字ベクトルのため、datファイルとして出力した際に、カンマが入っている行に""がついています。
これを元々のサンプルdatファイルと同じように1行目と6行目にだけ””をつけるようにするには、どうすればいいでしょうか。
コード、出力されたdatファイル、出力したいdatファイルの形の順で載せておきます。
サンプルdatファイル
"ex1"
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18
1, 10.0, 1.0, 0.5, 1, 1
0, 1.0e-8,
1, 1, 1, 1, 1
"exi.rst"
1, 1, 1, 2, 1
10
1
0.05
2.00
コード
% datファイル 読み込み
clear;clc
N1 = 1;
s1 = 1;
k = 0.05;
fid = fopen('ex1.dat');
k = 1;
a = cell(11,1);
while (~feof(fid))
tline = fgetl(fid);
a{k,:} = tline;
k = k + 1;
end
case_name = "ex_";
rst_number_N = num2str(0);
underber = "_";
number_steps = num2str(0);
exs_rst = ".rst";
% datファイル内、リスタートファイル書き換え
str1 = append(case_name,rst_number_N,underber,number_steps,exs_rst);
a(6,1) = cellstr(str1);
a(9,1) = num2cell(k);
% datファイル名 作成
datnumber_N = num2str(N1);
datnumber_steps = num2str(s1);
exs_dat = ".dat";
dat_name = append(case_name,datnumber_N,underber,datnumber_steps,exs_dat);
% datファイルへ書き出し
writecell(a,dat_name);
出力datファイル
"""ex1"" "
"1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18 "
"1, 10.0, 1.0, 0.5, 1, 1 "
"0, 1.0e-8 "
"1, 1, 1, 1, 1 "
ex_0_0.rst
"1, 1, 1, 2, 1"
10
1
5
2.00
出力したいdatファイルの形
"ex1"
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18
1, 10.0, 1.0, 0.5, 1, 1
0, 1.0e-8
1, 1, 1, 1, 1
"ex_0_0.rst"
1, 1, 1, 2, 1
10
1
5
2.00
Accepted Answer
More Answers (0)
Categories
Find more on テキスト ファイル in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!