精华内容
下载资源
问答
  • MATLAB 立体绘图

    2020-03-09 10:16:00
    MATLAB绘图基础2 MATLAB立体绘图2.1 生成网格坐标矩阵的函数2.2 画三维曲面的函数2.3 三维旋转体的绘制柱面球面2.4 三维图形的处理视点处理色彩处理消隐处理裁剪处理❤隐函数作图 2 MATLAB立体绘图 2.1 生成...

    2 MATLAB的立体绘图

    2.1 生成网格坐标矩阵的函数

    [X,Y]=meshgrid(x,y) 生成X-Y平面的网格坐标矩阵
    [X,Y,Z]=sphere(n) 生成球面的三维坐标矩阵
    [X,Y,Z]=cylinder(r,n) 生成柱面的三维坐标矩阵
    [X,Y]=meshgrid(x,y);Z=peaks(X,Y) peaks多峰函数,生成多峰曲面的坐标矩阵

    例子:

    %例一
    theta=0:pi/50:6*pi;
    x=cos(theta); y=sin(theta); z=0:300;
    plot3(x,y,z);
    %例二
    x=-3:0.1:3; y=-3:0.1:3;
    [X,Y]=meshgrid(x,y); Z=X.^2+Y.^2;
    surf(X,Y,Z);
    

    2.2 画三维曲面的函数

    plot3(X,Y,Z) 三维曲面
    mesh(X,Y,Z) 三维网格曲面
    meshz(X,Y,Z) 可将曲面加上围裙
    meshc(X,Y,Z) 同时画出网状图与等高线
    surf(X,Y,Z) 三维填充曲面(更精细)
    surfc(X,Y,Z) 同时画出曲面图与等高线
    bar3(A) 三维柱状图
    stem3(A) 三维棒状图
    pie3(A) 三维饼状图
    fill3(A) 三维填充图
    waterfall(X,Y,Z) 三维瀑布图,可在x方向或y方向产生水流效果
    contour3(X,Y,Z) 三维等高线图
    contour(X,Y,Z) 画出曲面等高线在XY平面的投影

    例子:

    %mesh和plot是三度空间立体绘图的基本命令,mesh可画出立体网状图,plot则可画出立体曲面图,两者产生的图形都会依高度而有不同颜色。
    %plot3可画出三度空间中的曲线。
    t=linspace(0,20*pi, 501);   
    subplot(3,4,1),plot3(t.*sin(t), t.*cos(t), t);title('plot3');  
    %也可同时画出两条三度空间中的曲线 
    t=linspace(0, 10*pi, 501);  
    subplot(3,4,2),plot3(t.*sin(t), t.*cos(t), t, t.*sin(t), t.*cos(t), -t);title('plot3');
    %mesh可画出立体网状图。
    x=linspace(-2, 2, 25); %在x轴上取25点  
    y=linspace(-2, 2, 25); %在y轴上取25点  
    [xx,yy]=meshgrid(x, y); %xx和yy都是21x21的矩阵  
    zz=xx.*exp(-xx.^2-yy.^2); %计算函数值,zz也是21x21的矩阵  
    subplot(3,4,3),mesh(xx, yy, zz);title('mesh'); %画出立体网状图
    %peaks函数可产生一个凹凸有致的曲面,包含了三个局部极大点及三个局部极小点。  
    subplot(3,4,4),peaks;
    %meshz可将曲面加上围裙。
    [x,y,z]=peaks;  
    subplot(3,4,5),meshz(x,y,z);title('meshz');
    axis([-inf inf -inf inf -inf inf]);  
    %meshc同时画出网状图与等高线。 
    [x,y,z]=peaks;  
    subplot(3,4,6),meshc(x,y,z);title('meshc');  
    axis([-inf inf -inf inf -inf inf]);   
    %surf画出立体曲面图
    x=linspace(-2, 2, 25); %在x轴上取25点  
    y=linspace(-2, 2, 25); %在y轴上取25点  
    [xx,yy]=meshgrid(x, y); %xx和yy都是21x21的矩阵   
    zz=xx.*exp(-xx.^2-yy.^2); %计算函数值,zz也是21x21的矩阵   
    subplot(3,4,7),surf(xx, yy, zz);title('surf'); %画出立体曲面图
    %surfc同时画出曲面图与等高线。  
    [x,y,z]=peaks;  
    subplot(3,4,8),surfc(x,y,z);title('surfc');
    axis([-inf inf -inf inf -inf inf]); 
    %waterfall可在x方向或y方向产生水流效果。 
    [x,y,z]=peaks;  
    subplot(3,4,9),waterfall(x,y,z);title('waterfall-x');
    axis([-inf inf -inf inf -inf inf]); 
    %在y方向产生水流效果 
    [x,y,z]=peaks;  
    subplot(3,4,10),waterfall(x',y',z');title('waterfall-y');
    axis([-inf inf -inf inf -inf inf]);  
    %contour3画出曲面在三度空间中的等高线。
    subplot(3,4,11),contour3(peaks, 20);title('contour3');
    axis([-inf inf -inf inf -inf inf]);
    %contour画出曲面等高线在XY平面的投影。
    subplot(3,4,12),contour(peaks, 20);title('contour');
    

    在这里插入图片描述

    2.3 三维旋转体的绘制

    柱面图

    由cylinder函数实现,调用格式为:

    [x,y,z]=cylinder(R,n); %其中R是一个向量,存放柱面各个等间隔高度上的半径,n表示在圆柱圆周上有n个间隔点,默认有20个间隔点。
    如:cylinder(3)生成一个圆柱,cylinder([10,1])生成一个圆锥,而t=0:pi/100:4*pi; R=sin(t); cylinder(R,30);生成一个正弦圆柱面。
    [X,Y,Z]=cylinder(R)或[X,Y,Z]=cylinder此形式为默认N=20且R=[1 1]
    

    例子:

    t=0:pi/20:2*pi;
    [x,y,z]=cylinder(2+sin(t),30);
    subplot(1,3,1);surf(x,y,z);
    axis('equal');axis('square'); %控制坐标轴的大小相同
    subplot(1,3,2);
    x=0:pi/20:pi*3;
    r=5+cos(x);
    [a,b,c]=cylinder(r,30);
    mesh(a,b,c);
    axis('equal');axis('square');
    subplot(1,3,3);
    r=abs(exp(-0.25*t).*sin(t));
    t=0:pi/12:3*pi;
    r=abs(exp(-0.25*t).*sin(t));
    [X,Y,Z]=cylinder(r,30);
    mesh(X,Y,Z);
    colormap([1 0 0]);
    axis('equal');axis('square');
    

    在这里插入图片描述

    球面图

    由sphere函数实现,调用格式为:

    [X,Y,Z]=sphere(N); %此函数生成3个(N+1)*(N+1)的矩阵,利用函数surf(X,Y,Z) 可绘制出圆心位于原点、半径为1的单位球体。
    n决定了球面的圆滑程度,其默认值为20。若n值取的比较小,则绘制出多面体的表面图。
    [X,Y,Z]=sphere; %此形式使用了默认值N=20。
    sphere(N); %只是绘制了球面图而不返回任何值。
    

    例子:

    subplot(1,2,1);
    [x,y,z]=sphere;
    surf(x,y,z);
    axis('equal');axis('square'); %控制坐标轴的大小相同
    subplot(1,2,2);
    [a,b,c]=sphere(40);
    t=abs(c);
    surf(a,b,c,t);
    axis('equal');axis('square');
    colormap('hot');
    

    在这里插入图片描述

    2.4 三维图形的处理

    视点处理

    设置视点的函数view,调用格式为:

    view(az,el); %其中az为方位角,el为仰角,它们均以度为单位。系统默认的视点定义为方位角为-37.5度,仰角30度。
    

    例子:

    subplot(2,2,1);mesh(peaks);view(-37.5,30);title('-37.5°,30°');
    subplot(2,2,2);mesh(peaks);view(0,90);title('0°,90°');
    subplot(2,2,3);mesh(peaks);view(90,0);title('90°,0°');
    subplot(2,2,4);mesh(peaks);view(-7,-10);title('-7°,-10°');
    

    在这里插入图片描述

    色彩处理

    内建矩阵

    colormap hot
    

    三维图形表面的着色

    shading faceted; %将每个网格片用其高度对应的颜色进行着色,网格线是黑色
    shading flat; %将每个网格片用同一个颜色进行着色,且网格线也用相应的颜色
    shading interp; %在网格片内采用颜色插值处理
    

    消隐处理

    例子:

    z=peaks(50);
    subplot(2,1,1);
    mesh(z);title('消隐前的网图')
    hidden off
    subplot(2,1,2)
    mesh(z);title('消隐后的网图')
    hidden on
    colormap([0 0 1]);
    

    在这里插入图片描述

    裁剪处理

    将图形中需要裁剪部分对应的函数值设置成NaN,使函数值为NaN的部分将不显示出来,从而达到对图形进行裁剪的目的。
    例子:

    %削掉正弦波顶部或底部大于0.5的部分。
    subplot(1,2,1);
    x=0:pi/10:4*pi;
    y=sin(x);
    i=find(abs(y)>0.5);
    x(i)=NaN;
    plot(x,y);
    axis([0 15 -0.4 0.4]);axis square
    %绘制两个球面,其中一个在另一个里面,将外面的球裁掉一部分,以便能看到里面的球。
    subplot(1,2,2);
    [x,y,z]=sphere(25);%生成外面的大球
    z1=z;
    z1(:,1:4)=NaN;%将大球裁去一部分
    c1=ones(size(z1));
    surf(3*x,3*y,3*z1,c1);       %生成里面的小球
    hold on
    z2=z;
    c2=2*ones(size(z2));
    c2(:,1:4)=3*ones(size(c2(:,1:4)));
    surf(1.5*x,1.5*y,1.5*z2,c2);
    colormap([0 1 0;0.5 0 0;1 0 0]);
    grid on;hold off;axis equal
    

    在这里插入图片描述

    ❤隐函数作图

    Matlab提供了ezplot函数绘制隐函数图形,用法如下:
    ①对于函数f=f(x),ezplot的调用格式为:

    ezplot(f); %在默认区间(-2pi,2pi)绘制图形
    ezplot(f,[a,b]); %在区间(a,b)绘制图形
    

    ②对于隐函数f=f(x,y),ezplot的调用格式为:

    ezplot(f); %在默认区间(-2pi,2pi)绘制f(x,y)=0的图形
    ezplot(f,[xmin,xmax,ymin,ymax]); %在区间[xmin,xmax,ymin,ymax]绘制图形
    ezplot(f,[a,b]); %在区间(a,b)绘制图形
    

    ③对于参数方程x=x(t),y=y(t),ezplot函数的调用格式为:

    ezplot(x,y); %在默认区间绘制x=x(t),y=y(t)图形
    ezplot(x,y,[tmin,tmax]); %在区间(tmin,tmax)绘制x=x(t),y=y(t)图形
    

    其他隐函数绘图还有ezpolar,ezcontour,ezplot3,ezmesh,ezmeshc,ezsurf,ezsurfc。
    例子:

    subplot(2,2,1);
    ezplot('x^2+y^2-9');axis equal;
    subplot(2,2,2);
    ezplot('x^3+y^3-5*x*y+1/5')
    subplot(2,2,3);
    ezplot('cos(tan(pi*x))',[0,1]);
    subplot(2,2,4);
    ezplot('8*cos(t)','4*sqrt(2)*sin(t)',[0,2*pi]);
    

    在这里插入图片描述

    展开全文
  • 在科学目视表示(Scientific visualization)中,三度空间的立体图是一个非常重要的技巧。本章将介绍MATLAB基本XYZ三度空间的各项绘图命令。 mesh和plot是三度空间立体绘图的基本命令,mesh可画出立体网状图,plot则...

    基本XYZ立体绘图命令

    在科学目视表示(Scientific visualization)中,三度空间的立体图是一个非常重要的技巧。本章将介绍MATLAB基本XYZ三度空间的各项绘图命令。
    mesh和plot是三度空间立体绘图的基本命令,mesh可画出立体网状图,plot则可画出立体曲面图,两者产生的图形都会依高度而有不同颜色。

    下列命令可画出由函数 形成的立体网状图:

    x=linspace(-2, 2, 25); % 在x轴上取25点
    y=linspace(-2, 2, 25); % 在y轴上取25点
    [xx,yy]=meshgrid(x, y); % xx和yy都是21x21的矩阵
    zz=xx.*exp(-xx.^2-yy.^2); % 计算函数值,zz也是21x21的矩阵
    mesh(xx, yy, zz); % 画出立体网状图

    surf和mesh的用法类似:

    x=linspace(-2, 2, 25); % 在x轴上取25点
    y=linspace(-2, 2, 25); % 在y轴上取25点
    [xx,yy]=meshgrid(x, y); % xx和yy都是21x21的矩阵
    zz=xx.*exp(-xx.^2-yy.^2); % 计算函数值,zz也是21x21的矩阵
    surf(xx, yy, zz); % 画出立体曲面图

    为了方便测试立体绘图,MATLAB提供了一个peaks函数,可产生一个凹凸有致的曲面,包含了三个局部极大点及三个局部极小点,其方程式为:

    z = 3*(1-x).^2.*exp(-(x.^2) - (y+1).^2) ...
    - 10*(x/5 - x.^3 - y.^5).*exp(-x.^2-y.^2) ...
    - 1/3*exp(-(x+1).^2 - y.^2)

    要画出此函数的最快方法即是直接键入peaks:

    亦可对peaks函数取点,再以各种不同方法进行绘图meshz可将曲面加上围裙:

    [x,y,z]=peaks;
    meshz(x,y,z);
    axis([-inf inf -inf inf -inf inf]);

    waterfall可在x方向或y方向产生水流效果:

    [x,y,z]=peaks;
    waterfall(x,y,z);
    axis([-inf inf -inf inf -inf inf]);

    下列命令产生在y方向的水流效果: 

    [x,y,z]=peaks;
    waterfall(x',y',z');
    axis([-inf inf -inf inf -inf inf]);

    meshc同时画出网状图与等高线:

    [x,y,z]=peaks;
    meshc(x,y,z);
    axis([-inf inf -inf inf -inf inf]);
    

    surfc同时画出曲面图与等高线:

    [x,y,z]=peaks;
    surfc(x,y,z);
    axis([-inf inf -inf inf -inf inf]);

    contour3画出曲面在三度空间中的等高线:

    contour3(peaks, 20);
    axis([-inf inf -inf inf -inf inf]);

    contour画出曲面等高线在XY平面的投影:

    contour(peaks, 20);

    plot3可画出三度空间中的曲线:

    t=linspace(0,20*pi, 501);
    plot3(t.*sin(t), t.*cos(t), t);
    

    亦可同时画出两条三度空间中的曲线:

    t=linspace(0, 10*pi, 501);
    plot3(t.*sin(t), t.*cos(t), t, t.*sin(t), t.*cos
    SURFL的z-参数。看z-参数的确定平滑涂色效果(定义变化方向)surfl(p,z);z=(n1,n2,n3)。           
    clf;
    x= -0.5:0.3:2.5;y=-0.5:0.3:2;
    [X,Y]=meshgrid(x,y);
    p=(4+X.^2/9+Y.^2/4);;
    %cm=[1 0 0;0 1 0;0 0 1];
    %colormap(cm)
    subplot(2,2,1);surfl(p,[1,0,0])
    subplot(2,2,2);surfl(p,[0,1,0])
    subplot(2,2,3);surfl(p,[0,0,1])
    subplot(2,2,4);surfl(p,[1,1,0])
    (4) 辅助图视效果
    *1)视角定义view(az,el)
    clf;x= -1.5:0.2:1.5;y=-1:0.2:1;
    [X,Y]=meshgrid(x,y);
    p=sqrt(4-X.^2/9-Y.^2/4);
    subplot(2,2,1);surfl(p);view(30,30)
    shading interp
    subplot(2,2,2);surfl(p);view(90,10)
    shading interp
    subplot(2,2,3);surfl(p);view(-10,-10)
    shading interp
    subplot(2,2,4);surfl(p);view(140,60)
    shading interp  
    *2)surfl光照模式与光照角度设置, surfl(x,y,z,d,s,k)指令中s 与k 参数
    d:见(3)
    s:确定光照角度;z=(sx,sy,sz);默认光照角度是观察角逆时针方向45度
    k::光照模式:确定强度
           ka:背景光          kd:漫射光        ks:定向光        spread:扩散光
    例:
    clf;x= -1.5:0.2:1.5;y=-1:0.2:1;
    [X,Y]=meshgrid(x,y);
    Z=sqrt(4-X.^2/9-Y.^2/4);
    view(45,45)
    subplot(2,2,1);surfl(X,Y,Z, [0,45],[.1 .6 .4 10]);
    shading interp
    subplot(2,2,2);surfl(X,Y,Z, [20,45],[.3 .6 .4 10]);
    shading interp
    subplot(2,2,3);surfl(X,Y,Z, [40,45],[.6 .6 .4 10]);
    shading interp
    subplot(2,2,4);surfl(X,Y,Z, [60,45],[.9 .6 .4 10]);
    shading interp
     
    *3) 图视放大 zoom on ;zoom off; zoom
    *鼠标点击变焦(左键放大;右键盘缩小)
    *鼠标拖拉变焦
    t=-16:0.1:16;
    x=sin(t.*10).*(t.^2);
    plot(t,x,'r-')
    zoom on    
    4. 超维图形表达
    (1) 三维色彩表达(色轴;图象的色彩维)
    clf
    a=ones(20);
    a1=2*ones(13);
    a2=3*ones(7);
    a3=4*ones(2);
    a(4:16,4:16)=a1;
    a(7:13,7:13)=a2;
    a(10:11,10:11)=a3;
    subplot(2,1,1)
    meshc(a)
    subplot(2,1,2)
    pcolor(a)
    colorbar('horiz')
    colormap(hsv)
    % shading interp
    
    (2) 四维色彩表达(色轴;图象的色彩维)
    clf
    x=-5:0.1:5;
    y=-5:0.25:5;
    z=-5:0.25:5;
    n=length(x);
    [X,Y,Z]=meshgrid(x,y,z);
    V=(-X.^2-Y.^2-Z.^2);
    xi=[-4,-2,0,2,4];
    yi=0.5;
    zi=-0.5;
    subplot(2,1,1);
    slice(x,y,z,V,xi,yi,zi);
    colorbar('horiz');
    view([45,45]);
    shading interp
    xi=[0];
    subplot(2,1,2);
    slice(x,y,z,V,xi,yi,zi);
    view([30,45]);
    shading interp    
    

     

    展开全文
  • 最近在实验室研究有关立体图像舒适度的项目,简单研究了一下怎么获得视差的程序代码。
  • matlab 心型立体图代码

    2013-06-22 19:48:55
    matlab程序实现3d笛卡尔心形图案,可以作为一个小玩意送给你喜欢的妹子,理科生的烂漫,里面是代码
  • matlab绘制立体图

    千次阅读 2009-12-21 20:41:00
    基本XYZ立体绘图命令 在科学目视表示(Scientific visualization)中,三度空间的立体图是一个非

    基本XYZ立体绘图命令

    在科学目视表示(Scientific visualization)中,三度空间的立体图是一个非常重要的技巧。本文将介绍MATLAB基本XYZ三度空间的各项绘图命令。  

    mesh和plot是三度空间立体绘图的基本命令,mesh可画出立体网状图,plot则可画出立体曲面图,两者产生的图形都会依高度而有不同颜色。下列命令可画出由函数形成的立体网状图:

    x=linspace(-2, 2, 25); % x轴上取25

    y=linspace(-2, 2, 25); % y轴上取25

    [xx,yy]=meshgrid(x, y); % xxyy都是21x21的矩阵

    zz=xx.*exp(-xx.^2-yy.^2); % 计算函数值,zz也是21x21的矩阵

    mesh(xx, yy, zz); % 画出立体网状图


    surf和mesh的用法类似:

    x=linspace(-2, 2, 25); % x轴上取25

    y=linspace(-2, 2, 25); % y轴上取25

    [xx,yy]=meshgrid(x, y); % xxyy都是21x21的矩阵

    zz=xx.*exp(-xx.^2-yy.^2); % 计算函数值,zz也是21x21的矩阵

    surf(xx, yy, zz); % 画出立体曲面图



    为了方便测试立体绘图,MATLAB提供了一个peaks函数,可产生一个凹凸有致的曲面,包含了三个局部极大点及三个局部极小点,其方程式为:

    要画出此函数的最快方法即是直接键入peaks:

    peaks

    z = 3*(1-x).^2.*exp(-(x.^2) - (y+1).^2) ...

    - 10*(x/5 - x.^3 - y.^5).*exp(-x.^2-y.^2) ...

    - 1/3*exp(-(x+1).^2 - y.^2)


    我们亦可对peaks函数取点,再以各种不同方法进行绘图。meshz可将曲面加上围裙:

    [x,y,z]=peaks;

    meshz(x,y,z);

    axis([-inf inf -inf inf -inf inf]);


    waterfall可在x方向或y方向产生水流效果:

    [x,y,z]=peaks;

    waterfall(x,y,z);

    axis([-inf inf -inf inf -inf inf]);


    下列命令产生在y方向的水流效果:

    [x,y,z]=peaks;

    waterfall(x',y',z');

    axis([-inf inf -inf inf -inf inf]);


    meshc同时画出网状图与等高线:

    [x,y,z]=peaks;

    meshc(x,y,z);

    axis([-inf inf -inf inf -inf inf]);


    surfc同时画出曲面图与等高线:

    [x,y,z]=peaks;

    surfc(x,y,z);

    axis([-inf inf -inf inf -inf inf]);


    contour3画出曲面在三度空间中的等高线:

    contour3(peaks, 20);

    axis([-inf inf -inf inf -inf inf]);


    contour画出曲面等高线在XY平面的投影:

    contour(peaks, 20);


    plot3可画出三度空间中的曲线:

    t=linspace(0,20*pi, 501);

    plot3(t.*sin(t), t.*cos(t), t);


    亦可同时画出两条三度空间中的曲线:

    t=linspace(0, 10*pi, 501);

    plot3(t.*sin(t), t.*cos(t), t, t.*sin(t), t.*cos(t), -t);

    from:http://shumozxf.blog.sohu.com/60505324.html

    展开全文
  • matlab开发-立体图像三角测量线。基于共线性方程,实现了两幅图像的束三角剖分。
  • 使用matlab里面的quiver函数画单个的向量和使用surf画平面十分不方便,所以自己写了3个函数,以便快捷的画简单的向量和平面。画向量函数function plotv3(v_start, v_end, v_size, v_color) % This ...

    69c35920230e75b64ada2b539f557b51.png

    使用matlab里面的quiver函数画单个的向量图和使用surf画平面图十分不方便,所以自己写了3个函数,以便快捷的画简单的向量图和平面图。

    1. 画向量图函数
    function plotv3(v_start, v_end, v_size, v_color)
    % This function is used to plot 3d vectors.
    %
    % Parameters:
    %   v_start: the start point of a vector
    %   v_end: the end point of a vector
    %   v_size: the vector line width, optional
    %   v_color: the vector's color, optional
    %
    % Examples:
    %   plotv3([0,0,0],[1,1,1]), plot a vector
    %   plotv3(p1, p2, 2), plot a vector,line width is 2
    %   plotv3(p1, p2, 2, 'g'), plot a vector, line width is 2, color is green
    %
    % @Author: ERYUESANHI 
    % @Date: 2020-11-03 20:25:48 
    
        v_style = quiver3(v_start(1),v_start(2),v_start(3), ...
                          v_end(1), v_end(2), v_end(3));
        v_style.MaxHeadSize = 0.3;
        v_style.LineWidth = 1.5;
        v_style.AutoScale = 'off';
        if nargin > 2
           v_style.LineWidth = v_size;
        end
        if nargin >3
            v_style.Color = v_color;
        end
        if nargin > 4 
            fprintf("Most 4 inputsn");
        end
        
    end
    

    66990b283c704abc5e329ac69faa6c9a.png

    2. 画3xn矩阵的列向量图

    function plotmv3(m)
    % This function is used to plot 3d column vectors of a 3xn matrix.
    %
    % Parameters:
    %   m: a 3xn matrix.
    %
    % Examples:
    %   plotmv3(m);
    %
    % @Author: ERYUESANHI
    % @Date: 2020-11-03 21:25:28 
    
        [row, col] = size(m);
        
        if row ~= 3
           fprintf("error! not 3 dimention");
        end
        
        for i=1:col
            v_style = quiver3(0,0,0, m(1,i), m(2,i), m(3,i));
            v_style.MaxHeadSize = 0.3;
            v_style.LineWidth = 1.5;
            hold on;
        end  
    end
    
    

    8b9980be026513898e6db9f945e6de09.png
    正交矩阵的列向量

    3. 画两个向量确定的平面

    function plotvp(v1, v2, p_color, p_alpha, p_edge_color)
    % This function is used to plot a plane formed by to vectors.
    %
    % Parameter:
    %   v1: vector 1
    %   v2: vector 2
    %   p_color: plane color, optional
    %   p_alpha: plane transparency, optional
    %   p_edge_color: plane grid color, optional
    %
    % Examples:
    %   plotvp([1,2,3],[2,3,4]), plot a plane formed by [1,2,3]' and [2,3,4];
    %   plotvp(v1,v2,'r'), the plane is red;
    %   plotvp(v1,v2,'r','0.5'), the red plane's alpha is 0.5;
    %   plotvp(v1,v2,'r','0.5','g'), the plane with green grids.
    %
    % @Author: ERYUESANHI
    % @Date: 2020-11-03 20:25:48 
    
        syms x y z;
        n = cross(v1,v2);
        if n(3) ~= 0
            z = (-n(1)*x - n(2)*y)/n(3);
        else
            z = 0;
        end
        fs = fsurf(x,y,z);
        fs.FaceColor = '#cdcdcd';
        fs.FaceAlpha = 0.5;
        fs.EdgeColor = 'none';
        
        if nargin > 2
            fs.FaceColor = p_color;
        end
        if nargin > 3
            fs.FaceAlpha = p_alpha;
        end
        if nargin > 4
            fs.EdgeColor = p_edge_color;
        end
        if nargin > 5
            fprintf("Most 5 inputsn");
        end
    end

    e7e023d3876934636e71bdcb273f8904.png

    一个综合示例:

    clear; clc; close all;
    
    O = [0,0,0];
    
    e1 = [1,0,0]';
    e2 = [0,1,0]';
    e3 = [0,0,1]';
    
    plotvp(e1,e2,'g',0.3);  % 画e1,e2张成的平面
    hold on
    plotvp((e1+e2+e3),[2,4,0],'r',0.3) % 画e1+e2+e3和[2 4 0]'所张成的平面
    plotv3(O,[2 4 0]) % 画[2 4 0]向量
    plotmv3([e1,e2,e3]) % 画三个基向量
    plotv3(O,(e1+e2+e3)) % 三个基向量的和向量
    plotv3(O,(e1+e2)) % e1和e2的和向量, e1+e2+e3在e1,e2所在平面的投影
    plotv3((e1+e2),[1 1 1]-[e1+e2]) % e1+e2的正交向量
    axis([-1.5,1.5,-1.5,1.5,-0.5,3])
    

    209f6ed5b9087eb7294023c6e8027670.png

    9b5f53d191cd5e910e8336677793b1d6.png
    展开全文
  • 写在前面,同意楼上杜帅的回答。...贴图和源代码:中的红五角星就是找到的最大值(这里有两处,该方法有几个就能找到几个,不受1的限制)。源代码(Matlab):clc;clear all;close all;x = -3:0.1:3;y = ...
  • matlab开发-三维立体图

    2019-08-24 08:05:51
    matlab开发-三维立体图。使用surf命令在3D中绘制X-Y-Z数据。不需要曲线拟合工具箱。
  • matlab开发-多相立体图像分割。根据不同的公式进行多相水平集图像分割
  • matlab三维立体图

    千次阅读 2017-08-02 14:48:51
    1. 三维立体图的基本要件: 全空间网格化网格节点的物理属性值 2.数据准备 数据不易贴,我放在了百度网盘:点击下载数据 大概如下形式: TIP: 这里的数据矩阵为v(5276),可以看成一本27页纸,每页...
  • MATLAB立体包络

    千次阅读 2018-05-28 19:07:16
    1. 三维立体图的基本要件:全空间网格化网格节点的物理属性值2.数据准备数据不易贴,我放在了百度网盘:点击下载数据 大概如下形式: TIP: 这里的数据矩阵为v(5*27*6),可以看成一本27页纸,每页绘制了5*6的网格,...
  • MATLAB 平面及立体绘图

    2011-08-19 14:34:50
    第一章 二维图形的绘制 § 基本绘图函数 § 绘图入门 § 图形窗口的分割 § 图形窗口的修饰 § 绘制矩阵 第二章 特殊二维绘图函数 第三章 三维图形绘制 § 绘制三维曲线 ...§ 绘制三维曲面
  • 展开全部解决这个问题的方法如下:1、双击62616964757a686964616fe58685e5aeb931333431376531matlab软件图标,打开matlab软件,可以看到matlab软件的界面。2、通过语句:u=-6:0.1:6;v=-6:0.1:6;创建两个数组u和v。3...
  • MATLAB画心形立体图

    万次阅读 2018-04-23 08:47:45
    代码如下>> [x,y,z]=meshgrid(linspace(-3,3,120)); f=(x.^2+(9*y.^2)./4+z.^2-1).^3-((9*y.^2).*(z.^3))./80-(x.^2).*(z.^3); p=patch(isosurface(x,y,z,f,0)); set(p,'FaceColor','r') grid on...
  • 自己写的matlab程序,最终实验得出立体图像舒适亮度匹配立体图像舒适亮度差异,仅供参考。与大家共享
  • matlab绘制三维立体图

    千次阅读 2019-03-15 19:56:33
    我原以为理解并且会应用matlab绘制三维,但动起手来,我发现各种不会,弄着弄着都有点怀疑人生了。首先,plot与plot3分别绘制二维与三维的曲线,而不是曲面,这是我的一个误区!还有,当你有x,y,z数据(行向量...
  • matlab 三维立体图生成器(双眼视差)
  • matlab开发-对称立体图像的双正则化基尺寸分辨率增强。基于双正则化的非对称立体图像分辨率增强
  • Matlab
  • 一个漂亮的红色立体心的仿真,(含matlab代码)
  • ipython常用功能及matlab绘制立体图

    千次阅读 2014-08-14 19:16:02
    概述 iPython 是一个Python 的交互式Shell,比默认的Python Shell 好用得多,功能也更强大。 她支持语法高亮、自动完成、代码调试、对象自省,支持 Bash Shell 命令,内置了许多 很有用的功能和函式等,非常...
  • 首先说明一点,需要用到matlab的stereoCameraCalibrator算法,该算法在2014a版本后添加的,因此之前的版本找不到,所以还是安装一个新版本的吧,我装的2016a。 这里说一下,换2016a可能会遇到打开图片特别慢,这里...
  • matlab对二维图像生成立体图像

    千次阅读 2019-01-08 21:24:55
    [imagen1 imagepath1]=uigetfile('D:\MATWORKSHOP\source_images\MULTIFOCUS\*.jpg;*.bmp;*.png;*.tif;*.tiff;*.pgm;*.gif','Please choose the first input image'); f=imread(strcat...比如生成的一张
  • matlab开发-高光谱图像立体切片机。图像切片器,用于可视化多通道图像数据。
  • Matlab常用绘图

    千次阅读 2017-05-05 10:33:54
    Matlab常用绘图 本节介绍MATLAB 的两种基本绘图功能:二维平面图形和三维立体图形。
  • 1.Matlab关于立体相机标定与目标三维坐标定位的流程环境:Matlab r2015b找到 APPS-->Stereo Camera Calibrator-->Add Image,此时会提示左右摄像头拍摄的棋盘格标定图片输入路径(Folder for images from ...
  • Matlab数据的可视化 -- 柱形立体图

    千次阅读 2017-02-24 17:24:18
    本篇微信图文主要介绍Matlab数据可视化方面的内容。cylinder
  • MATLAB正确地绘制正弦函数的图形,从中你会发现许多技术细节问题,一些抽象的理论问题,你可以在实践中得以启发。close all; clear; n=64;x = [0: 2*pi/n: 2*pi];x = x(1:n);y = sin(x);figure, stem(y), title('...
  •  在MATLAB中,二维统计分析图形很多,常见的有条形、阶梯、杆和填充等,所采用的函数分别是:bar(x,y,选项)stairs(x,y,选项)stem(x,y,选项)fill(x1,y1,选项1,x2,y2,选项2,…)。   例 分别以条形、...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 381
精华内容 152
关键字:

matlab立体图

matlab 订阅