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

9 次查看(过去 30 天)
翔 池田
翔 池田 2022-7-17
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列を書き込む方法を教えていただけますでしょうか.

采纳的回答

Atsushi Ueno
Atsushi Ueno 2022-7-17
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 个评论
翔 池田
翔 池田 2022-7-17
ご回答ありがとうございます!
私のミスがありまして、、、
xyz=[x,y,z]ではなくて
xyz=[x',y',z' ]になります.
つまり変数xyzは5行3列の行列になります.
この行列をvtkファイルに
1 1 2
1 2 4
1 3 6
1 4 8
1 5 10
というように書き出したいです.
Atsushi Ueno
Atsushi Ueno 2022-7-17
下記の様に、行列の列数を指定しないと上手く読み込んでくれません。
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

请先登录,再进行评论。

更多回答(0 个)

Community Treasure Hunt

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

Start Hunting!