matlab怎么定义函数?怎么将三维图做侧投影一起画出来?
例如定义函数y=2*x:
matlab画三维投影图 matlab画三维线图
新建M文件,输入
function y=double_x(x)
y=2*x;
保存即可。
后一个问题不明白楼主的期望是什么,提示:用subplot可以在一个窗口中画多个图。
可以plot 两次 加一个hold on
contourf(x1,x2,z);
colorbar('vert')
你说的类似于等高线图吧,相同值用相同颜色表示,第一个命令就是,第二个命令是显示出对应颜色数值,从大到小。。。\(^o^)/~给分。
本视频展示如何用matlab绘制散圆状态图,可用于相关科研数据绘图!
方法如下:
N=? '定义网格分多细,看个人需要
M=? '同上
R=? '球的半径自己填
X=zeros(N+1,M)
X0=zeros(N+1,M)
Y=zeros(N+1,M)
Y0=zeros(N+1,M)
Z=zeros(N+1,M)
Z0=zeros(N+1,M)
for i=0:N
for j=1:M
X(i,j)=R*sin(pi/N*i)*cos(2*pi/M*j)
Y(i,j)=R*sin(pi/N*i)*sin(2*pi/M*j)
Z(i,j)=R*cos(pi/N*i)
end
end
mesh(X,Y,Z)
hold
mesh(X,Y,Z0)
mesh(X,Y0,Z)
mesh(X0,Y,Z)
抱歉,我暂时还没发现MATLAB有什么可以解符号的曲线曲面积分的函数,所以如果还有大神知道怎么解的话请指导。下面我用数值办法解了个近似解。基本思想就是将底面分成很多分,然后取每份中点的高度当做高度的均值,分别计算每份的面积再求和得出总面积。
clear
S =
后来我发现,我将均分数num改大或改小,结果都是6.2832,相差在10^-15,并不会随着等分数的增加而增加精度。所以我画了个图,感觉截面应该就是个正椭圆,所以取中点处的高度当做平均高度不会有误差。甚至当num=1时也是如此(可能比100时还少了些计算误差)
所以这个数值解的精度应该能和解析解旗鼓相当。
有两种方法,一种是你用meshgrid得到的数据,过滤出对应于你希望Z值的xy集合,再用plot画出来,另一种就是,你直接改变Z轴的取值范围,把水平面设定到Z值就相当于投影到了
matlab三维曲线投影上色
t=0:pi/10:8*pi;
y = t.^2;
z=cos(t/2).^2;
x=t;
mesh([x;x],[y;y],[z;z]);
view(2);
colorbar;
用mesh来画三维的曲面,用view指定在二维x-y坐标下观察
由于mesh需要输入的是矩阵,直接复制一行x,y,z
比较简单地实现了你所需要的功能
至于表示z值大小的颜色,可以用colormap命令更改
也可以在画出的figure中菜单项eidt->colormap中更改
t=0:pi/10:8*pi;
y = (t).^(2);
z=(cos(t/2)).^(2);
x=t;
patch([x nan],[y nan],0*[z nan],[z nan],'edgecolor','flat','facecolor','none')
colorbar
Matlab 三维图像投影的平面
那就再画个patch一下就行了嘛
fv1=isosurface(x,y,0*z,D,100);%xy平面,其他平面投影类似
p1=patch(fv1,'FaceColor','red','EdgeColor','black');
hold on;
plot3(x,y,zeros(1,length(x)),'r');
plot3(x,zeros(1,length(x)),z,'c');
plot3(zeros(1,length(x)),y,z,'g');
hold off;
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至836084111@qq.com 举报,一经查实,本站将立刻删除。