MATLAB Answers

0

4次元表示したいです。

Asked by ryo tanaka on 8 Jun 2019
Latest activity Edited by Yoshio
on 10 Jun 2019
3次元+温度表示の4次元データを作成したいです。
下の画像のように中心から外側にいくにつれて温度が低くなっているのを
4次元座標での表示をしたいです。
どのような方法で中心から外側に行くにつれて温度が低くなっているのを
4次元表示できますでしょうか?
教えてください。
無題.png

  0 Comments

Sign in to comment.

Tags

1 Answer

Yoshio
Answer by Yoshio
on 8 Jun 2019
Edited by Yoshio
on 8 Jun 2019

こんな感じではいかがでしょうか?
alphaalphamapについては各々ドキュメントをご覧ください。
EPSO=8.854214871e-12;
CHARGE=1.6021918e-19;
x=-0.1:0.0025:0.1;
y = x;
z = x;
[X,Y,Z] = meshgrid(x,y,z);
u0=4.0*pi*EPSO*sqrt(X.^2+Y.^2+Z.^2+eps);
u=CHARGE*u0.^-1;
V = log(u);
xslice = [0,0.1]; yslice = [0.0,0.1]; zslice = [-0.1,0];
h = slice(X,Y,Z,V,xslice,yslice,zslice);
xlabel('X');ylabel('Y');zlabel('Z');
caxis([min(V(:)) -16.2])
axis equal
set(h,'EdgeColor','none','FaceColor','interp',...
'FaceAlpha','interp')
alpha('color')
alphamap('increase',.3)
rotate3d
untitled.bmp

  5 Comments

ryo tanaka on 10 Jun 2019
回答ありがとうございます。
sqrt(X.^2+Y.^2+Z.^2);ではしらせるときれいに分布が表示できました。
何度も質問すみません。
この分布を表示させる計算方法(下記の計算式)はどのような手順でおこなわれているのか、
各式の説明をして頂けると幸いです。
EPSO=8.854214871e-12;
CHARGE=1.6021918e-19;
u0=4.0*pi*EPSO*sqrt(X.^2+Y.^2+Z.^2);
u=CHARGE*u0.^-1;
V = log(u);
このスクリプトをしっかりと理解したいなと思っています。
どうぞよろしくお願い致します。
Yoshio
on 10 Jun 2019
この式は例題としてクーロンの法則を使っただけですので、気にされないでください。
本質は
u = a/sqrt(X.^2+Y.^2+Z.^2);
で中心に行くほど大きな値になります。ryo tanakaさんの表したい温度の式で置き換えてください。
V = log(u)としているのは、人間が見てわかる色の領域に値を圧縮しています。
温度範囲が狭ければ、uをそのまま表示すれば良いと思います。
ryo tanaka on 10 Jun 2019
返信ありがとうございます。
そういった意味だったのですね、ご丁寧にありがとうございました。
参考にさせてもらって作成してみたいと思います。

Sign in to comment.