「X,Y,Z,成分」​の4列のテキストデー​タからパネルダイヤグ​ラムを作成したい

조회 수: 7 (최근 30일)
Kenjiro Hiratsuka
Kenjiro Hiratsuka 2024년 2월 26일
편집: Atsushi Ueno 2024년 2월 27일
「X,Y,Z,成分」の4列のテキストデータから、添付画像のようなパネルダイヤグラムを作成したいです。
値の取得は下記コードを作成したのですが、パネルダイヤグラムを表示するための手法は何が最適でしょうか?
% データフォルダの選択ダイアログを表示し、ファイルのパスを取得
[filename, folder] = uigetfile('*.txt', 'データファイルを選択してください');
% ユーザーがキャンセルボタンを押した場合の処理
if isequal(filename, 0) || isequal(folder, 0)
disp('ファイルが選択されませんでした。処理を中止します。');
return;
end
% ファイルのフルパスを構築
fullpath = fullfile(folder, filename);
% データの読み込み
data = dlmread(fullpath);
% XYZ座標と成分の列を取得
X = data(:, 1);
Y = data(:, 2);
Z = data(:, 3);
Component = data(:, 4);

답변 (1개)

Atsushi Ueno
Atsushi Ueno 2024년 2월 26일
편집: Atsushi Ueno 2024년 2월 27일
slice 関数を使った上記サンプル事例を色々弄りました。だいぶ近づいたかな🤔
(追記:X/Y平面に分けて slice 関数を書いてましたが、一度に描ける事が判り修正しました)
[x,y,z,v] = flow; % サンプルデータ(flow)
hxy = slice(x,y,z,v,[2,5,8],[-1.5,1.5],[]);
[hxy.FaceColor] = deal('interp'); % メッシュ内を補完して滑らかに
[hxy.EdgeColor] = deal('none'); % メッシュ状の目盛線を消す
alpha(hxy,.8) % 透明度の設定
set(gca,'Color','k'); % 座標軸の背景を黒に
set(gcf,'color','k'); % figureの背景を黒に
daspect([1,1,1]) % アスペクト比を1:1にする
axis tight % 座標軸の端までプロットされる様にする
view(-45,60) % カメラ角度
camzoom(1.4) % カメラズーム
lightangle(45,45) % 照明角度
colormap(jet) % カラーマップ設定
clim([-6,1]) % カラーマップ適用範囲設定
  댓글 수: 2
Atsushi Ueno
Atsushi Ueno 2024년 2월 26일
「X,Y,Z,成分」4列のデー​タを「ボリュームデータ=X,Y,Z,V全て同サイズの3次元行列」にする必要があります。理路整然と等間隔かつ昇順に並んだデータなら reshape 関数で加工する事ができますが、おそらくは測定データで、バラバラなXYZ座標と共に成分が測定されたものと思います。
その場合、上記リンク先のscatteredInterpolant関数で3次元散布データの内挿を行って「ボリュームデータ」を作成してから slice 関数に入力してください。
% XYZ座標と成分の列を取得
X = data(:, 1);
Y = data(:, 2);
Z = data(:, 3);
Component = data(:, 4);
dx = 0.01; dy = 0.01; dz = 0.01; % ボリュームデータの刻み幅 (要変更)
F = scatteredInterpolant(data,Component); % 3次元の散布データの内挿
[xq,yq,zq] = meshgrid(min(X):dx:max(X), min(Y):dy:max(Y), min(Z):dz:max(Z));
vq = F(xq,yq,zq); % クエリ位置 (xq,yq,zq) で内挿を評価
Kenjiro Hiratsuka
Kenjiro Hiratsuka 2024년 2월 27일
大変詳細な回答をありがとうございます。
scatteredInterpolant関数」による3次元散布データの内挿補間は初めて知りました。
書いていただいたコードをもとにいろいろ試してみます。

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 ライティング、透明度、およびシェーディング에 대해 자세히 알아보기

제품


릴리스

R2022a

Community Treasure Hunt

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

Start Hunting!