精华内容
下载资源
问答
  • MATLAB做两个figure

    千次阅读 2018-02-02 09:50:36
    matlab使用figure(1), figure(2)...可以作出多幅。示例如下: 1 2 3 4 5 6 theta=linspace(0,2*pi,400); rou=4*sin(2*theta); figure(1) polar(theta,rou); ...

    matlab使用figure(1), figure(2)...可以作出多幅图。示例如下:

    1
    2
    3
    4
    5
    6
    theta=linspace(0,2*pi,400);
    rou=4*sin(2*theta);
    figure(1)
    polar(theta,rou);
    figure(2);
    ezplot('x^(2/3)+y^(2/3)-2^(2/3)')

    搜索

    展开全文
  • 5、下(a)是一幅两个灰度图像合成的图像,已知其中一幅图像如(b)所示,试把另一幅图像提取出来,并显示。 运用减法 %加载入要处理的图片 A=imread('a.png'); %将I变为[0,1]的值 B=imread...

    5、下图(a)是一幅两个灰度图像合成的图像,已知其中一幅图像如图(b)所示,试把另一幅图像提取出来,并显示。

     

     

     

    运用减法做

    %加载入要处理的图片
    A=imread('a.png');
    %将I变为[0,1]的值
    B=imread('b.png');
    subplot(221);
    imshow(A);
    title('原图');
    subplot(222);
    imshow(B);
    title('其中一幅图片');
    subplot(223);
    imshow(A-B);
    title('处理后图像');
    

     处理结果:

     

    转载于:https://www.cnblogs.com/sunmingyang/p/10702942.html

    展开全文
  • 与@ Benoit_11的解决方案相比,我使用正常的Matlab标签,并用手柄引用两个轴,所以分配是明确的.以下代码创建一个空x轴b,单位m / s的高度可忽略不计.之后,实际绘图绘制在位于其他轴上方的第二轴a上,单位km / h.要绘制...

    你可以做如下的事情.与@ Benoit_11的解决方案相比,我使用正常的Matlab标签,并用手柄引用两个轴,所以分配是明确的.

    以下代码创建一个空x轴b,单位m / s的高度可忽略不计.之后,实际绘图绘制在位于其他轴上方的第二轴a上,单位km / h.要绘制特定的轴,请插入轴柄作为杆的第一个参数.从m / s到km / h的转换直接写在了对stem的调用中.最后,需要将两个轴的xlim属性设置为相同的值.

    % experimental data

    M(:,1) = [ 0, 1, 2, 3, 4, 5];

    M(:,3) = [12, 10, 15, 12, 11, 13];

    % get bounds

    xmaxa = max(M(:,1))*3.6; % km/h

    xmaxb = max(M(:,1)); % m/s

    figure;

    % axis for m/s

    b=axes('Position',[.1 .1 .8 1e-12]);

    set(b,'Units','normalized');

    set(b,'Color','none');

    % axis for km/h with stem-plot

    a=axes('Position',[.1 .2 .8 .7]);

    set(a,'Units','normalized');

    stem(a,M(:,1).*3.6, M(:,3));

    % set limits and labels

    set(a,'xlim',[0 xmaxa]);

    set(b,'xlim',[0 xmaxb]);

    xlabel(a,'Speed (km/h)')

    xlabel(b,'Speed (m/s)')

    ylabel(a,'Samples');

    title(a,'Double x-axis plot');

    展开全文
  • 本文承接在matlab入门基础操作介绍的篇推文之后,在matlab入门(下)中介绍了部分绘图相关的操作,本文首先一点简单回顾,重点介绍三维图形的绘制部分。1、基础知识1.1二维图形绘制plot函数是Matlab绘制二维图形的...

    e10ac26384e8c90bd491d882d878dad6.png

    本文承接在matlab入门基础操作介绍的两篇推文之后,在matlab入门(下)中介绍了部分绘图相关的操作,本文首先做一点简单回顾,重点介绍三维图形的绘制部分。

    1、基础知识

    1.1 二维图形绘制

    plot函数是Matlab绘制二维图形的常用函数,该函数将数组中的数据点绘连起来构成一条连续的曲线。

    plot(x,y,'PropertyName',PropertyValue)

    • 当x和y为同维数组时,分别以x和y为横纵坐标绘制曲线;

    • x为一维数组,y为矩阵时,y的某一维度与x维度相等,绘制多条曲线;

    • x和y都为矩阵时,分别以对应的x和y为横纵坐标,曲线条数与矩阵列数相等。

    plot(x1,y1,x2,y2,'PropertyName',PropertyValue)

    在窗口中同时绘制以x1和y1,x2和y2等分别为横纵坐标的曲线。

    %plot函数绘图示例%生成一维数组及参数数组a = 0:0.1:1; t = 0:0.01:1;%生成二维数组y = sin(3*t').*exp(-t')*a;%figure1:二维数组绘制曲线subplot(1,2,1);plot(y);axis([0,100,0,1]);xlabel('index');ylabel('y');title('figure1');%figure2:一维数组和二维数组绘制曲线subplot(1,2,2);plot(t,y);axis([0,1,0,1]);xlabel('t');ylabel('y');title('figure2');

    dd0660b4a7b85fa836146fc98ab7f0a5.png

    1.2 三维图形绘制

    plot3函数是Matlab绘制三维曲线的常用函数。

    Plot3(x,y,z,LineSpec,'PropertyName',PropertyValue)

    如果x,y和z是同维数组(向量、矩阵),分别以对应列作为x、y和z坐标,曲线的个数等于矩阵列维。

    %plot3函数绘图示例t = 0:pi/50:10*pi;subplot(1,2,1);plot3(sin(t),cos(t),t,'r*-');xlabel('sin(t)');ylabel('cos(t)');zlabel('t');title('figure1:helix');%绘制多条曲线x = linspace(0,3*pi,200);z1 = sin(x); z2 = sin(2*x); z3 = sin(3*x);y1 = zeros(size(x)); y2 = ones(size(x));y3 = 2*ones(size(x));subplot(1,2,2);plot3(x,y1,z1,'r*',x,y2,z2,'bp',x,y3,z3,'mx');xlabel('x');ylabel('y');zlabel('z');title('figure2:sin(x),sin(2x),sin(3x)');

    1be4c30789bf38a8dfb941d5739b4a50.png

    1.3 曲面图与等值线

    三维网格图相当于在x-y平面上的z坐标定义一个网格面,相邻的点通过直线连接,网格节点就是z的数据点,在Matlab中通过mesh函数实现。

    • mesh(z):以z矩阵的列和行的下标为x和y轴的自变量绘制网格图;

    • mesh(x,y,z):x和y为自变量矩阵,z为建立在x和y之上的函数矩阵;

    与mesh函数相比,surf函数使曲面上的所有网格都填充了颜色,命令格式与mesh函数类似。但提供了平面阴影和插值阴影。

    等值线图能够将具有相同数值的点连起来绘制相等数值的曲线或曲面,常用的MATLAB绘制等值线图函数的命令格式为:

    • contour(z):绘制z所表达的等值线图   

    • coutour(z,n):参数n为所需要绘制的等值线图的数目

    • contour(z,v):向量v定义了等值线的数目和数值

    %surf函数绘图示例%颜色表示等值线绘图示例x = 0:pi/20:2*pi;y = 0:pi/20:2*pi;[X,Y] = meshgrid(x,y);Z = sin(X)+cos(Y);subplot(1,2,1);surf(X,Y,Z);shading interp;subplot(1,2,2);contourf(X,Y,Z,20)

    8f30c1e7e5aec2390858fd454e003b7a.png

    2、特殊的三维图形

    2.1 三维切片图

    对一个三维立体数据点集进行切片观察数据分布,可以采用matlab中的slice函数。

    Slice(x,y,z,V,sx,sy,sz):绘制在三个坐标轴方向在于sx,sy和sz向量所对应的切片图,其中x,y,z,V是m*n*p的三维立体数据点集。

    %绘制三维切片图[x,y,z,v] = flow;sx = linspace(min(min(min(x)))+1.5,max(max(max(x))),5);sy = [1,-1]; sz = [1,-1];slice(x,y,z,v,sx,sy,sz);shading interp;colormap jet;

    1aa163c1cced687db7055ca49346f88d.png

    2.2 三维向量图

    为了表示某一函数曲面上各点的梯度向量,比如速度图等,我们需要在曲面图上各点绘制向量,这可以调用matlab函数quiver3()来实现。

    quiver3(x,y,z,u,v,w):在位置(x,y,z)处绘制元素(u,v,w)的向量图。

    %三维向量图示例x = 0:pi/10:2*pi;y = 0:pi/10:2*pi;[X,Y] = meshgrid(x,y);Z = sin(X)+cos(Y);[u,v,w] = surfnorm(X,Y,Z);colormap hsv;surf(X,Y,Z);hold onquiver3(X,Y,Z,u,v,w,0.5)axis([0,2*pi,0,2*pi])

     4c6c8d22c2c5f712b647552e01cf8b16.png

    2.3 三维等值线

    在matlab中绘制三维等值线可以调用contour3函数,调用格式类似于二维等值线的绘制。

    • contour3(Z):绘制矩阵Z的三维等值线;

    • contour3(Z,n):绘制具有n条矩阵Z的三维等值线;

    • contour3(Z,v):在参数v上绘制矩阵Z的三维等值线,等值线数量等于数组v的长度。

    x = 0:pi/20:2*pi;y = 0:pi/20:2*pi;[X,Y] = meshgrid(x,y);Z = sin(X)+cos(Y);contour3(X,Y,Z,30)xlabel('X');ylabel('Y');zlabel('Z');title('三维等值线图');

    0ff23cf22a365422547b752afe9a22f9.png

    2.4 三维柱状图

    在matlab中绘制三维柱状图可以调用bar3函数来实现,其调用格式为:

    • bar3(Y):绘制矩阵Y的三维柱状图,矩阵每一行元素代表图形中一排柱形图;

    • bar3(x,Y,width):在参数向量x的指定位置绘制矩阵Y的三维柱状图,width参数可省,控制柱形图的宽度。

    Y = 10*rand(5,5);x = 0:2.5:10;bar3(x,Y,0.6);

    9eda5026d3571063203cf1414b67e6c4.png

    2.5 三维饼图

    在matlab中绘制三维饼图需要调用pie3函数,类似于二维饼图绘制,其函数调用格式为:

    • pie3(X):当X为向量时,三维饼状图表示每个元素占所有元素之和的比例,当X为矩阵时,表示每个元素占矩阵全部元素和的比例;

    • pie3(X,explode,labels):其中explode参数与X维度相同,表示是否将对应的扇形区域单独表示,例如explode取值为[0,0,0,1]表示将第四个元素对应的扇形区域单独表示,labels表示重新标注每个扇形区域名称。

    ebda708ecc936c7deb948949b37f8090.png

    3、小试牛刀

    在今年情人节的推文中,展示了一张用matlab做的明信片,我们就以此为例,熟悉一下matlab的绘图命令。

    5945a6f3959df18b2b6060c4accc2f3b.png

    在这张明信片中,文字部分可以用text函数添加,重点需要做的是右侧的树。

    在这棵树中,树干部分采用了原始图像中的树干,树叶采用一个心形线函数进行填充,树冠轮廓用一个心形线进行约束,确保所有树叶都在树冠轮廓内,所有树叶可以组成一个心形图。

    Step1:导入树干图像,同时提取树干轮廓数据备用;

    %读取树干图像im = imread('tree.jpg');%提取树干轮廓A = rgb2gray(I);se1=strel('disk',2);A2=imerode(A,se1); bw = im2bw(A2); contour = bwperim(bw);

    e27058b699ebdb2545b6386f8dd06fc1.png

    Step2:根据树干,确定树冠轮廓线位置和树冠大小;

    h = ezplot('x^2-1.3*abs(x)*y+y^2-1');data=get(h, 'contourMatrix');data = data(:,2:end);theta = 1.04*pi;data = data'*[cos(theta),-sin(theta); sin(theta),cos(theta)];X=50*data(:,1) + 300;Y=50*data(:,2) + 75;

    通过心形线生成的树冠轮廓中心在原点处,我们需要对心形线上各点进行旋转和平移,其中旋转操作可以通过矩阵运算来实现;

    f5339e2da5338c5eb1a0c332f66e5550.png

    上式表示,将点(X,Y)逆时针旋转角度theta。缩放可以对坐标乘上一个合适的系数,同理对坐标加或减某一个单位长度,即可完成对坐标的平移。

    328770c9f5318dcb6c6be5adfe5e3c3f.png

    Step3:绘制树叶,在原点处绘制心形线,并通过fill函数进行随机的颜色填充;

    function [] = show_heart(x,y,color) %绘制心形线h = ezplot('x^2-1.4*abs(x)*y+y^2-1'); set(h,'color','w');hold on%抓取轮廓数据 heart = get(h, 'contourMatrix');heart = heart(:,2:end);%将树叶轮廓点进行旋转和平移 theta = 2*rand()*pi; heart = heart'*[cos(theta),-sin(theta); sin(theta),cos(theta)]; heart=3*heart; heart(:,1) = heart(:,1) + x;heart(:,2) = heart(:,2) + y;%对树叶进行颜色填充 h = fill(heart(:,1),heart(:,2),[color(1)/255,color(2)/255,color(3)/255]); set(h,{'LineStyle'},{'none'})end

    Step4:在树冠区域内随机选择一些位置,作为树叶中心点,同时确保选中的位置树干轮廓线内;

    %在树冠轮廓内和树干轮廓外随机添加树叶for x = min(X):6:max(X) for y = min(Y):6:max(Y) if rand() > 0.25 if inpolygon(x,y,X,Y) && (~inpolygon(x,y,XX,YY)) index = sum((rand() - heart_rand)>=0); hold on show_heart(x,y,heart_color(index,:)); end end endend

    以上,就可以完成这颗心形树的绘制,完整代码可以在公众号后台回复【明信片】获取。

    相关推文

    MATLAB入门(上)

    MATLAB入门(下)

    e7dee2597edf5c37e1cdc0fb3eb304f3.png

    展开全文
  • MATLAB怎么做两个figure?

    千次阅读 2018-02-02 11:28:52
    matlab使用figure(1), figure(2)...可以作出多幅。示例如下: 1 2 3 4 5 6 theta=linspace(0,2*pi,400); rou=4*sin(2*theta); figure(1) polar(theta,rou); ...
  • 两个文件夹中提取图像,并对图像进行差,代码如下:path1='C:\Users\45480\Desktop\matlab0522\bg\'; path2='C:\Users\45480\Desktop\matlab0522\ord\'; for i=1:15 %图像数量 I = imread([path2 'image' num2...
  • 基本上有两个方法:一个是将你的图像统一进行一次重命名如:1.jpg,2.jpg等,然后利用for循环依次进行处理即可,如下面的语句:假设你的图像共有20副:str='D:\差\好的图像\'; %我的图像放在D盘,差文件夹下,好...
  • Matlab中将一幅图片成栅格地图

    千次阅读 2019-08-05 22:31:39
    虽然地图选好了,但这张图是有一点瑕疵的,可以发现他的岛屿是白色的,海水是浅蓝色,两个颜色相近。在读取图片数字矩阵的时候容易造成障碍物遗漏,像下面这种情况 从数字矩阵看出,208代表海水区域,其余代表...
  • 此处我们使用的案例是非典时期香港4月11日开始的新增患者数据,我们发现这个数据比较符合指数下降的趋势,因此采用指数模型对其进行解析式表达,这样我们就得到了两个数组,我们使用plot指令,采用hold的方式,就...
  • 基本上有两个方法:一个是将你的图像统一进行一次重命名如:1.jpg,2.jpg等,然后利用for循环依次进行处理即可,如下面的语句:假设你的图像共有20副: str='D:\差\好的图像\'; %我的图像放在D盘,差文件夹下...
  • 近来在做MATLAB实验的时候遇到一问题,手头上有几张fig图像,为了更好地进行对比,需要合成一fig图形,由于跑出的fig图形耗费了很长的时间,因此不能使用hold on 命令,因此就教给大家简单的方法。 1、用MATLAB...
  • 最近在图像处理的实验中遇到了一个小问题,然后调试代码时发现最后的图像像素值都是1,后来思考发现matlab里面读取图像的像素值的数据类型均为unit8,所以当我在计算两个像素值乘积的时候,当计算结果大于255时,...
  • 二元决策(binary decsion diagram):本质上是一个有向无环,很类似于决策树。可以把多阶段系统的故障...我的理解就是,对于变量x,因为它只有两个值:0(完全成功)、1(完全失效)(只讨论二态元件),所以x的路径选...
  • 明天准备用卷积神经网络处理分类问题,数据集大概有几万张图片,打算取其中的简单分类。在这里先回顾一下以前在Matlab上利用LeNet对Mnist数据集分类的代码。本来是准备用Pytorch的,但是由于某台电脑装...
  • ![图片说明](https://img-ask.csdn.net/upload/201812/16/1544945595_770018.png) 比如这个系统,我要怎么能让两个图像一起显示?
  • 在《教你制作一幅画意摄影作品》的文章中,介绍了Snapseed(指划修)和ToolWiz Photos(理理相册)两个App中用手机或平板制作画意摄影作品的基本方法,现在再来进一步试试用两张图片合成制作一幅画意作品的方法。...
  • 预处理的过程分为两个步骤,包括火灾图像的增强和滤波。用一些Matlab 的处理实验来分析说明各种方法对火灾图像预处理后所得到的效果。 关键词:Matlab 预处理 图像增强 图像滤波 1 Matlab简介 2 火灾图像的预处理 ...
  • 对图像垂直投影的matlab代码

    热门讨论 2013-03-07 14:29:16
    对图像垂直投影的matlab代码,分为行投影和列投影两部分,修改图像路径后可直接执行。结果分为行投影,列投影两个直方
  • Matlab 同一文件夹下图片批量处理的种简单方法 最近因为实验中有许多图片需要处理,本来的做法是一张张读取图片,这是相当麻烦的,因为每处理一张图片就需要修改相应的图片名。于是就想着要是可以批量处理就好了...
  • Matlab实现批量处理图像的种方法

    万次阅读 2017-01-03 09:02:51
    基本上有两个方法:一个是将你的图像统一进行一次重命名如:1.jpg,2.jpg等,然后利用for循环依次进行处理即可,如下面的语句:假设你的图像共有20副: str='D:\差\好的图像\'; %我的图像放在D盘,差文件夹下,...
  • MATLAB画视频帧间的运动矢量

    千次阅读 2019-01-09 09:27:18
    基于MATLAB的Horn–Schunck光流算法求解运动两个相邻帧之间的运动矢量 题目要求 任选一测试视频,输入其任意前后两针的帧整,以及运动矢量,运动矢量的绘制可以按照8*8的块为矢量绘制单位。可以使用Horn和...
  • 相关文章:MATLAB之Simulink(三)全加器由于全加器有三个输入,其中一个是由低位的进位输入进来的,但是最低位只有两个输入,所以两个最低位相加不能用加法器,那么应该如何相加呢?这里给大家介绍另一种加法器——...
  • MATLAB GUI设计——绘图

    千次阅读 2013-04-16 15:51:39
     讨论两个问题,将MATLAB绘图保存为适合于论文使用的格式,绘图的一些技巧。也许我们都这样的过,MATLAB所绘制的图形要保存为图片,一般是使用截图的方式,或者使用FILE下的另存为BMP格式等等,这样的做法有一些...
  • matlab有自带的库函数,但我也编写了两个,他们跳出条件不同,开始是对于matlab不等于的判定条件不太确定,又写了一个比较简单的误差平方和的判断条件,个人认为这种迭代的算法对跳出条件还是很敏感的。需要注...
  • ◆◆◆◆MathWorks对自动驾驶技术的投入可以总结为以下几阶段:2015年,瑞典著名的重卡生产商SCANIA发布了用MATLAB/Simulink设计的AEB(自动紧急刹车)系统,看动画:在这案例中,SCANIA利用MATLAB/Simulink了...
  • Python and Matlab绘制曲线

    千次阅读 2016-03-26 17:15:38
    天老师让标定一下视频中跟踪目标的真实位置(详见OpenCV记录鼠标左键点击位置),并与跟踪位置一下对比。就是画一误差。刚开始用matlab画了一下,之前一直想学python,所以就用python又画一下。 下面是...
  • 最近又用到matlab做GUI,之前学的全忘了,还好年前留了大实验源码。 下面我来通过源码分析一下matlab怎么做GUI。这次我来分析如何通过matlab打开图像并将图像显示到界面。 实验效果 原理 打开菜单编辑器看这...
  • 原文链接:https://blog.csdn.net/humanking7/article/details/46826105核心提示在Matlab中高斯滤波非常方便,主要涉及到下面两个函数:函数: fspecial函数: imfilter代码实现clear all;clc;%--------------------...

空空如也

空空如也

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

matlab做两个图

matlab 订阅