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

2 Ansichten (letzte 30 Tage)
翔 池田
翔 池田 am 17 Jul. 2022
Kommentiert: Atsushi Ueno am 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列を書き込む方法を教えていただけますでしょうか.

Akzeptierte Antwort

Atsushi Ueno
Atsushi Ueno am 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 Kommentare
翔 池田
翔 池田 am 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 am 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

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Text Data Preparation finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!