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

7 views (last 30 days)
Kenjiro Hiratsuka
Kenjiro Hiratsuka on 26 Feb 2024
Edited: Atsushi Ueno on 27 Feb 2024
「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);

Answers (1)

Atsushi Ueno
Atsushi Ueno on 26 Feb 2024
Edited: Atsushi Ueno on 27 Feb 2024
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 Comments
Atsushi Ueno
Atsushi Ueno on 26 Feb 2024
「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 on 27 Feb 2024
大変詳細な回答をありがとうございます。
scatteredInterpolant関数」による3次元散布データの内挿補間は初めて知りました。
書いていただいたコードをもとにいろいろ試してみます。

Sign in to comment.

Products


Release

R2022a

Community Treasure Hunt

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

Start Hunting!