「X,Y,Z,成分」の4列のテキストデータからパネルダイヤグラムを作成したい
1 回表示 (過去 30 日間)
古いコメントを表示
「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);
0 件のコメント
回答 (1 件)
Atsushi Ueno
2024 年 2 月 26 日
編集済み: Atsushi Ueno
2024 年 2 月 27 日
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
2024 年 2 月 26 日
「X,Y,Z,成分」4列のデータを「ボリュームデータ=X,Y,Z,V全て同サイズの3次元行列」にする必要があります。理路整然と等間隔かつ昇順に並んだデータなら reshape 関数で加工する事ができますが、おそらくは測定データで、バラバラなXYZ座標と共に成分が測定されたものと思います。
% 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) で内挿を評価
参考
カテゴリ
Help Center および File Exchange で ライティング、透明度、およびシェーディング についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!