独立したxyz座標の​データから三次元等高​線図を書くことができ​ますか?

23 views (last 30 days)
晶太郎 松井
晶太郎 松井 on 8 Jul 2021
(x,y,z)がそれぞれ独立に決まているデータを用いて三次元等高線図を作成する方法を教えていただきたいです。
添付しているxyz座標のデータで3dグラフ(図1.fig)を描きデータを比較したのですが、複雑で分かりにくいため、等高線でデータを比較したいと考えました。
イメージ図.pngのような三次元等高線図を描きたいと考えています。このような図をmatlabで描くことは可能でしょうか。
解決方法の見当がつく方がいれば、ぜひ助けてほしいです。よろしくお願いいたします。
  2 Comments
Atsushi Ueno
Atsushi Ueno on 8 Jul 2021
表面プロットを使えばイメージ図に近い表示が出来ます。
自分が具体的なプログラムを書くとすれば、夜になります。
晶太郎 松井
晶太郎 松井 on 8 Jul 2021
Atsushi Ueno さん、早急なご返答ありがとうございます。
教えていただいた表面プロットを使って試してみます。

Sign in to comment.

Accepted Answer

Atsushi Ueno
Atsushi Ueno on 8 Jul 2021
「X軸811項目:Y軸10項目」とアスペクト比が大き過ぎて、表面プロットが良い感じに見えるようになりませんね。
下の例では、811項目の内20項目まで絞って表面プロットで描画してみました。また対数表示にしたり、色々見た目を変えてみました。同じ事はfigure画面でも可能です(マウスで各種パラメータを変更し、グリグリ回して確認できます)。
load('xyz座標.mat');
[X, Y] = meshgrid(x(1:20),1:10); % ちょっと横着。811項目の内20項目に絞る
Z = [z1 z2 z3 z4 z5 z6 z7 z8 z9 z10]';
Z = Z(:,1:20); % 811項目の内20項目に絞る
s = surf(X,Y,Z);
xlabel ('[Hz]'); ylabel ('[Sec]'); zlabel ('Power');
set(gca,'zscale','log'); % Z軸を対数スケールにする
pbaspect([100 10 100]); % Y軸だけ短いのでアスペクト比を変更する
s.EdgeColor = 'none'; % エッジを非表示にする
colormap('jet'); % カラーマップを表示する
colorbar; % カラーバーを表示する
caxis(gca, [0 1e-6]); % カラーバーの色指定範囲を変更
  1 Comment
晶太郎 松井
晶太郎 松井 on 8 Jul 2021
丁寧にご回答して頂き、ありがとうございました。
自分で試した際も、データが多いためグラフをきれいに書くことができていませんでした。
Atsushi Ueno さんのプログラムを参考にして色を変えるなど試行錯誤しようと思います。
本当にありがとうございました。

Sign in to comment.

More Answers (0)

Products


Release

R2021a

Community Treasure Hunt

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

Start Hunting!