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

조회 수: 1 (최근 30일)
翔 池田
翔 池田 2022년 7월 17일
댓글: 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'];
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개)

카테고리

Help CenterFile Exchange에서 Text Data Preparation에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!