向量场可视化matlab,Matlab向量场可视化
本來是去回答百度知道里的問題的,自己技術不很夠,折騰幾個小時才搞明白,提交時已經有大神解決了問題了。。。。
是這個問題:
然后又悲劇地發現自己的結果和大神的不一樣。。。。
公式是:
我得承認大神的代碼比我的還是簡潔多了,寫函數時用了arrayFun,好簡潔的。我是一個個寫的。。。。
但是覺得我做出來的這個還是有點特點的,所以貼出來,和大家交流一下:
我的思路是:
這個問題是在一定的xyz范圍內,對每一個點(x,y,z)生成對應的dB并積分,然后作出圖像。圖中的那個積分式,對于每個(x,y,z)點都要計算一次,由它決定錐形的方向與大小(積分結果是一個向量,當然就決定了方向,然后其模長就是錐形的大小)。
我采用的數值如下:
R=0.1
I=0.1
x,y,z都在[-15,15]區間內,間隔為2.
圖像是這樣的,我覺得這個圖好神奇,照了很多個角度:
代碼如下:
clc
clear all
close all
R=0.1;
I=0.1;
k=10^(-7);%k=u0/(4*pi)
[x,y,z]=meshgrid(-15:2:15);
u_fun=@(f)k.*R.*I.*z.*cos(f)./(sqrt((x-R.*cos(f)).^2+(y-R.*sin(f)).^2+z.^2)).^3;
v_fun=@(f)k*R*I.*z*sin(f)./(sqrt((x-R*cos(f)).^2+(y-R*sin(f)).^2+z.^2)).^3;
w_fun=@(f)-k*R*I*(sin(f)*(y-R*sin(f))+cos(f)*(x-R*cos(f)))./(sqrt((x-R*cos(f)).^2+(y-R*sin(f)).^2+z.^2)).^3;
u=integral(u_fun,0,2*pi,'ArrayValued',true);
v=integral(@(f)v_fun(f),0,2*pi,'ArrayValued',true);
w=integral(@(f)w_fun(f),0,2*pi,'ArrayValued',true);
[cx,cy,cz]=meshgrid([-15:2:15]);
h=coneplot(x,y,z,u,v,w,cx,cy,cz,5);
set(h,'FaceColor','r','EdgeColor','none');
camlight;lighting gouraud;
grid on;box on;
大神的結果是:
代碼是:
L = R;
I = 0.1; R = 0.1;
u0 = pi*4e-7;
dB = @(x,y,z,t) u0/4*pi * [ R*I*z*cos(t); R*I*z*sin(t); ...
R*I*(sin(t).*(y-R*sin(t))+cos(t).*(x-R*cos(t))) ] / ...
sqrt( (x-R*cos(t)).^2 + (y-R*sin(t)).^2 + z.^2 ).^3;
B = @(x,y,z) quadv(@(t)dB(x,y,z,t),0,2*pi);
[x,y,z] = meshgrid(linspace(-L,L,10));
B = arrayfun(B,x,y,z,'UniformOutput',false);
[m,n,l] = size(B);
[m,n,l] = meshgrid(1:m,1:n,1:l);
Bx = arrayfun(@(i,j,k)B{i,j,k}(1),m,n,l);
By = arrayfun(@(i,j,k)B{i,j,k}(2),m,n,l);
Bz = arrayfun(@(i,j,k)B{i,j,k}(3),m,n,l);
B = sqrt(Bx.^2+By.^2+Bz.^2);
clf reset
colordef(gcf,'black')
[cx cy cz] = meshgrid(linspace(-L,L,10));
h=coneplot(x,y,z,Bx,By,Bz,cx,cy,cz,B,0.8);
set(h,'EdgeColor', 'none');
view(35,25)
xlabel('x');
ylabel('y');
zlabel('z');
box on;
axis tight
camlight left;
camlight right;
lighting phong
關于用coneplot畫圖 - MATLAB 基礎討論 - MATLAB中文論壇 - Powered by Discuz!
http://www.ilovematlab.cn/thread-93141-1-1.html
MIT向量場繪圖教程
總結
以上是生活随笔為你收集整理的向量场可视化matlab,Matlab向量场可视化的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oracle 表空间写文件,Oracle
- 下一篇: oracle查询pga大小GB,Orac