如何策划一个函数在一个三维球体吗?

7视图(30天)
Wiqas艾哈迈德
Wiqas艾哈迈德 2022年7月5日
评论道: 威廉•罗斯 2022年9月4日
我想把下面的函数在一个领域获得这些数据:
我的编码的程序是:
清晰的所有;
关闭所有;
clc;
% % - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -程序- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
N0 = 100;
r_med = 0.445;
sigma_g = 7;
N_ang = 91;
th = linspace(0,π,181);
ph = linspace(0, 2 *π,181);
i = 1:长度(r_med)
(赛(我,:),P12(我,:),P33(我:),意思是(我:),~,~,~]= ZK_W_Cloud_PhaseFunc (N0, r_med(我),sigma_g, N_ang)
结束
(θ,φ)= meshgrid (th, ph值)
I = 1;
Q = 1;
U = 0;
p =赛(1:)。*我+ P12(1:)。*(问:* cos(2 *φ)+美国* sin(2 *φ));%相位函数
x = p。* (sin(φ))* cos(θ);
y = p。* (sin(φ))*罪(θ);
z = p。* (cos(φ));
冲浪(x, y, z)
包含(“x”);
ylabel (“y”);
zlabel (“z”);
的输出是:
我不知道在哪里的问题。请如果任何人都可以解决。维的输入参数是:
2的评论
Wiqas艾哈迈德
Wiqas艾哈迈德 2022年7月5日
你是对的。这是我的失误,但让我解释进一步弄清楚。和我的图其实r_med无关。我刚从另一个程序导入这些数据只是为了给读者。r_med有四个值,这就是为什么循环运行。画我的图,我只是需要一个r_med的价值。无论如何,我直接情节你提到但得到了同样的结果
theta0 = linspace(0,π,181);
phi0 = linspace(0, 2 *π,361);
I = 1; Q = 0; U = 0;
(θ,φ)= meshgrid (theta0 phi0);
公积金=侯。*我+ ((P12。*问:* cos(2 *φ))+ (P12。*美国* sin(2 *φ)));
x =公积金。* (sin(φ))* cos(θ);
y =公积金。* (sin(φ))*罪(θ);
z =公积金。* (cos(φ));
冲浪(x, y, z)
包含(“x”);
ylabel (“y”);
zlabel (“z”);

登录置评。

答案(1)

威廉•罗斯
威廉•罗斯 2022年9月4日
编辑:威廉•罗斯 2022年9月4日
(edit-correct错误)
我在你的评论不能运行简化代码。代码似乎依靠侯和P12计算。我没有 ZK_W_Cloud_PhaseFunc ,计算P11and P12。
我建议你检查你的θ和φ。你spherical-to-Cartesian转换假定φ是+ Z轴角测量,θ是+ X轴的角度测量,在X - y平面,重点在xy平面的投影。标准,但板块公约列车可以用来制作你想要的数据复制。请参见“Conveentions”部分: https://en.wikipedia.org/wiki/Spherical_coordinate_system
如果你假设θ和φ的意思是正确的,那么你的phi0和theta0应该
theta0 = linspace(0, 2 *π,361);
phi0 = linspace(0,π,181);
注意与你的不同。
好运!
1评论
威廉•罗斯
威廉•罗斯 2022年9月4日
不明显的从我的回答,你可以实施另一种公约通过离开theta0和phi0出现在您的代码在你的评论,但改变φ和θ的角色转换为X, Y, Z。换句话说;
theta0 = linspace(0,π,181);
phi0 = linspace(0, 2 *π,361);
%其他代码…
x =公积金。* (sin(θ))* cos(φ);
y =公积金。* (sin(θ))*罪(φ);
z =公积金。* (cos(θ));
也许会有所帮助。我希望如此。

登录置评。

标签

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!