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

3 次查看(过去 30 天)
Kenjiro Hiratsuka
Kenjiro Hiratsuka 2024-2-26
「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!