n×m行列のdoub​le型データを繰り返​し文を使わずにvtk​ファイルに書き出す方​法

4 views (last 30 days)
翔 池田
翔 池田 on 17 Jul 2022
Commented: Atsushi Ueno on 17 Jul 2022
x=[1,1,1,1,1];
y=[1,2,3,4,5];
z=[2,4,6,8,10];
xyz=[x',y',z'];
filename='data.vtk';
fid = fopen(filename, 'w');
data.vtkに上記の変数xyzである5行3列を書き込む方法を教えていただけますでしょうか.

Accepted Answer

Atsushi Ueno
Atsushi Ueno on 17 Jul 2022
fopen関数でファイルを開いた後は、fprintf関数でASCIIデータを書き込めます。下記の例ではデリミタをタブにしました。
x=[1,1,1,1,1]; y=[1,2,3,4,5]; z=[2,4,6,8,10]; xyz=[x,y,z];
fid = fopen('data.vtk', 'w');
fprintf(fid,'%d\t',xyz); % 変数xyzのデータをdata.vtkに書き込む
fclose(fid);
type data.vtk
1 1 1 1 1 1 2 3 4 5 2 4 6 8 10
fid = fopen('data.vtk', 'r');
new_xyz = fscanf(fid,'%d\t'); % data.vtkからデータをnew_xyzに読み込む
fclose(fid);
new_xyz'
ans = 1×15
1 1 1 1 1 1 2 3 4 5 2 4 6 8 10
  2 Comments
Atsushi Ueno
Atsushi Ueno on 17 Jul 2022
下記の様に、行列の列数を指定しないと上手く読み込んでくれません。
x=[1,1,1,1,1]; y=[1,2,3,4,5]; z=[2,4,6,8,10]; xyz=[x;y;z];
fid = fopen('data.vtk', 'w');
fprintf(fid,'%d %d %d\n',xyz); % 変数xyzのデータをdata.vtkに書き込む
fclose(fid);
type data.vtk
1 1 2 1 2 4 1 3 6 1 4 8 1 5 10
fid = fopen('data.vtk', 'r');
new_xyz = fscanf(fid,'%d %d %d\n',[3 inf]); % data.vtkからデータをnew_xyzに読み込む
fclose(fid);
new_xyz'
ans = 5×3
1 1 2 1 2 4 1 3 6 1 4 8 1 5 10

Sign in to comment.

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!