半球に測定値をプロットして色で変化を見る方法

6 views (last 30 days)
KAWAHARA HIDETO
KAWAHARA HIDETO on 14 Apr 2018
Commented: mizuki on 19 Apr 2018
測定値は(X,Y,Z,測定値)として10か所もっています。 sphereを使用して半球座標を得ることは出来ましたが、測定値をプロットする方法が分かりません。 よろしくお願いします。 現状は以下のようになっています。
if true
% code
[x1,y1,z1]=sphere;
x1=x1(11:end,:);
y1=y1(11:end,:);
z1=z1(11:end,:);
r=1;
figure
C=[-0.99*x1/r 0*y1/r 0.15*z1/r *0.666591
0.5*x1/r -0.86*y1/r 0.15*z1/r *0.6635891
0.5*x1/r 0.86*y1/r 0.15*z1/r *0.6668098
-0.45*x1/r 0.77*y1/r 0.45*z1/r *0.6683663
-0.45*x1/r -0.77*y1/r 0.45*z1/r *0.6712117
0.89*x1/r 0*y1/r 0.45*z1/r *0.6660206
0.33*x1/r 0.57*y1/r 0.*z1/r *0.6765934
-0.66*x1/r 0*y1/r 0.75*z1/r *0.6733946
0.33*x1/r -0.57*y1/r 0.75*z1/r *0.6850352
0*x1/r 0*y1/r 1*z1/r *0.7396369];
sf=surf(C);
colorbar
end
  2 Comments
KAWAHARA HIDETO
KAWAHARA HIDETO on 17 Apr 2018
回答ありがとうございます。
測定値はCです。
半球座標に測定値をプロットして、Z軸の高低ではなく色で数値の高低を見たいと思っています。

Sign in to comment.

Answers (1)

Etsuo Maeda
Etsuo Maeda on 17 Apr 2018

mizukiさんの書かれているように、もう少し何が何であるのかという説明があれば、回答を得やすくなります。

例えば、

1. 測定値を数値としてp1 = [10, 98, 23] のように記述しておく

2. 記述したコードに何をしようとしたものかのコメントを付ける

3. 何をしたいのかを明確に記述する

など、回答者に問題を理解してもらうために質問内容のリファインをしたほうがよさそうです。

かなり行間を読む努力をすると、

a. (半球上にあるはずの)XYZの直交座標上のデータをXYZ直交座標上にプロットしたい

b. 半球と測定値を重ね書きしたい

c. 三次元直交座標を三次元極座標に変換したい

のうちの何れか、もしくはその組み合わせのように思われますが、どうでしょうか?

参考として、球座標と散布プロットの重ね書きのサンプルは下記のようになります。

[X, Y, Z] = sphere; % 球座標を生成
surf(X, Y, Z, 'FaceColor', 'black', 'FaceAlpha', '0.1');
hold on; % 重ね書き有効
k = randi(21*21, 1); % 球座標上からランダムに1点を抜き出すためのkを生成
scatter3(X(k), Y(k), Z(k), 100, 'MarkerFaceColor', 'red'); 
hold off; % 重ね書き無効
  2 Comments
mizuki
mizuki on 19 Apr 2018

C のサイズは [110 63] のようでして、想定されているような C が作成できていないのではないかと思いますがいかがでしょうか。

>> size(C)

なお、SURF に色を付けたい場合、入力引数はCのみではなく最低でも二つ必要です。(描画したい値と色の変数) 詳しい使用方法は以下のドキュメントをご参考にしてください。

https://jp.mathworks.com/help/matlab/ref/surf.html

Sign in to comment.

Products

Community Treasure Hunt

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

Start Hunting!