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

1 view (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
翔 池田
翔 池田 on 17 Jul 2022
ご回答ありがとうございます!
私のミスがありまして、、、
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 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)

Categories

Find more on Text Data Preparation 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!