谁有MATLAB绘图大全啊

谁有MATLAB绘图大全啊,第1张

matlab绘图大全 一。 二维数据曲线图11 绘制 单根二维曲线 plot 函数的基本调用 格式为: plot(x,y) 其中x和y为长度相同的向量,分别用于存储x坐标 和y坐标数据。 例1-1 在0≤x≤2p区间内,绘制曲线 y=2e-05xcos(4πx)程序 如下:x=0:pi/100:2pi;y=2exp(-05x)cos(4pix);plot(x,y) 例1-2 绘制曲线。 程序如下:t=0:01:2pi;x=tsin(3t);y=tsin(t)sin(t);plot(x,y); plot函数最简单的调用格式是只包含一个输入参数 : plot(x)在这种情况下,当x是实向量时,以该向量元素的下标为横坐标,元素值为纵坐标画出一条连续曲线,这实际上是绘制折线图。 12 绘制多根二维曲线 1.plot函数的输入参数是矩阵 形式 (1) 当x是向量,y是有一维与x同维的矩阵时,则绘制出多根不同颜色 的曲线。曲线条数等于y矩阵的另一维数,x被作为这些曲线共同的横坐标。 (2) 当x,y是同维矩阵时,则以x,y对应列元素为横、纵坐标分别绘制曲线,曲线条数等于矩阵的列数。 (3) 对只包含一个输入参数的plot函数,当输入参数是实矩阵时,则按列绘制每列元素值相对其下标的曲线,曲线条数等于输入参数矩阵的列数。 当输入参数是复数矩阵时,则按列分别以元素实部和虚部为横、纵坐标绘制多条曲线。 2.含多个输入参数的plot函数 调用格式为:plot(x1,y1,x2,y2,…,xn,yn)(1) 当输入参数都为向量时,x1和y1,x2和y2,…,xn和yn分别组成一组向量对,每一组向量对的长度可以不同。每一向量对可以绘制出一条曲线,这样可以在同一坐标内绘制出多条曲线。 (2) 当输入参数有矩阵形式时,配对的x,y按对应列元素为横、纵坐标分别绘制曲线,曲线条数等于矩阵的列数。 例1-3 分析下列程序绘制的曲线。 x1=linspace(0,2pi,100);x2=linspace(0,3pi,100);x3=linspace(0,4pi,100);y1=sin(x1);y2=1+sin(x2);y3=2+sin(x3);x=[x1;x2;x3]';y=[y1;y2;y3]';plot(x,y,x1,y1-1) 3.具有两个纵坐标标度的图形 在MATLAB中,如果需要绘制出具有不同纵坐标标度的两个图形,可以使用plotyy绘图函数。调用格式为: plotyy(x1,y1,x2,y2)其中x1,y1对应一条曲线,x2,y2对应另一条曲线。横坐标的标度相同,纵坐标有两个,左纵坐标用于x1,y1数据对,右纵坐标用于x2,y2数据对。 例1-4 用不同标度在同一坐标内绘制曲线y1=02e-05xcos(4πx) 和y2=2e-05xcos(πx)。 程序如下:x=0:pi/100:2pi;y1=02exp(-05x)cos(4pix);y2=2exp(-05x)cos(pix);plotyy(x,y1,x,y2); 4.图形保持 hold on/off命令 控制 是保持原有图形还是刷新原有图形,不带参数的hold命令在两种状态之间进行切换。 例1-5 采用图形保持,在同一坐标内绘制曲线y1=02e-05xcos(4πx) 和y2=2e-05xcos(πx)。 程序如下:x=0:pi/100:2pi;y1=02exp(-05x)cos(4pix);plot(x,y1)hold ony2=2exp(-05x)cos(pix);plot(x,y2);hold off 13 设置曲线样式 MATLAB提供了一些绘图选项,用于确定所绘曲线的线型、颜色和数据点标记符号,它们可以组合使用。例如,“b-”表示蓝色点划线,“y:d”表示**虚线并用菱形符标记数据点。当选项省略时,MATLAB规定,线型一律用实线,颜色将根据曲线的先后顺序依次。 要设置曲线样式可以在plot函数中加绘图选项,其调用格式为: plot(x1,y1,选项1,x2,y2,选项2,…,xn,yn,选项n) 例1-6 在同一坐标内,分别用不同线型和颜色绘制曲线y1=02e-05xcos(4πx) 和y2=2e-05xcos(πx),标记两曲线交叉点。 程序如下:x=linspace(0,2pi,1000);y1=02exp(-05x)cos(4pix);y2=2exp(-05x)cos(pix);k=find(abs(y1-y2)<1e-2); %查找y1与y2相等点(近似相等)的下标 x1=x(k); %取y1与y2相等点的x坐标 y3=02exp(-05x1)cos(4pix1); %求y1与y2值相等点的y坐标 plot(x,y1,x,y2,'k:',x1,y3,'bp'); 14 图形标注与坐标控制 1.图形标注 有关图形标注函数的调用格式为:title(图形名称) xlabel(x轴说明) ylabel(y轴说明) text (x,y,图形说明) legend(图例1,图例2,…) 函数中的说明文字,除使用标准的ASCII字符外,还可使用LaTeX格式的控制字符,这样就可以在图形上添加希腊字母、数学符号及公式等内容。例如,text(03,05,‘sin({\omega}t+{\beta})’)将得到标注效果sin(ωt+β)。 例1-7 在0≤x≤2p区间内,绘制曲线y1=2e-05x和y2=cos(4πx),并给图形添加图形标注。 程序如下:x=0:pi/100:2pi;y1=2exp(-05x);y2=cos(4pix);plot(x,y1,x,y2)title('x from 0 to 2{\pi}'); %加图形标题 xlabel('Variable X'); %加X轴说明 ylabel('Variable Y'); %加Y轴说明 text(08,15,'曲线y1=2e^{-05x}'); %在指定位置添加图形说明 text(25,11,'曲线y2=cos(4{\pi}x)'); legend(‘y1’,‘ y2’) %加图例 2.坐标控制 axis函数 的调用格式为: axis([xmin xmax ymin ymax zmin zmax])axis函数功能丰富,常用的格式还有: axis equal:纵、横坐标轴采用等长刻度。 axis square:产生正方形坐标系(缺省为矩形)。 axis auto:使用缺省设置。 axis off:取消坐标轴。 axis on:显示 坐标轴。 给坐标加网格线用grid命令来控制。grid on/off命令控制是画还是不画网格线,不带参数的grid命令在两种状态之间进行切换。 给坐标加边框用box命令来控制。box on/off命令控制是加还是不加边框线,不带参数的box命令在两种状态之间进行切换。 例1-8 在同一坐标中,可以绘制3个同心圆,并加坐标控制。 程序如下:t=0:001:2pi;x=exp(it);y=[x;2x;3x]';plot(y)grid on; %加网格线 box on; %加坐标边框 axis equal %坐标轴采用等刻度 15 图形的可视化编辑 MATLAB 65版本在图形窗口中提供了可视化的图形编辑工具,利用图形窗口菜单栏或工具栏中的有关命令可以完成对窗口中各种图形对象的编辑处理。 在图形窗口上有一个菜单栏和工具栏。菜单栏包含File、Edit、View、Insert、Tools、Window和Help共7个菜单项,工具栏包含11个命令按钮。 16 对函数自适应采样的绘图函数 fplot函数的调用格式为: fplot(fname,lims,tol,选项) 其中fname为函数名,以字符串形式出现,lims为x,y的取值范围,tol为相对允许误差,其系统 默认值为2e-3。选项定义与plot函数相同。 例1-9 用fplot函数绘制f(x)=cos(tan(πx))的曲线。 命令如下:fplot('cos(tan(pix))',[ 0,1],1e-4) 17 图形窗口的分割 subplot函数的调用格式为: subplot(m,n,p)该函数将当前图形窗口分成m×n个绘图区,即每行n个,共m行,区号按行优先编号,且选定第p个区为当前活动区。在每一个绘图区允许以不同的坐标系单独绘制图形。 例5-10 在图形窗口中,以子图形式同时绘制多根曲线。 二。 其他二维图形21 其他坐标系下的二维数据曲线图 1.对数坐标图形 MATLAB提供了绘制对数和半对数坐标曲线的函数,调用格式为: semilogx(x1,y1,选项1,x2,y2,选项2,…) semilogy(x1,y1,选项1,x2,y2,选项2,…) loglog(x1,y1,选项1,x2,y2,选项2,…) 2.极坐标图 polar函数用来绘制极坐标图,其调用格式为: polar(theta,rho,选项) 其中theta为极坐标极角,rho为极坐标矢径,选项的内容与plot函数相似。 例1-12 绘制r=sin(t)cos(t)的极坐标图,并标记数据点。 程序如下:t=0:pi/50:2pi;r=sin(t)cos(t);polar(t,r,'-'); 22 二维统计分析图 在MATLAB中,二维统计分析图形很多,常见的有条形图、阶梯图、杆图和填充图等,所采用的函数分别是: bar(x,y,选项) stairs(x,y,选项) stem(x,y,选项) fill(x1,y1,选项1,x2,y2,选项2,…) 例1-13 分别以条形图、阶梯图、杆图和填充图形式绘制曲线y=2sin(x)。 程序如下:x=0:pi/10:2pi;y=2sin(x);subplot(2,2,1);bar(x,y,'g');title('bar(x,y,''g'')');axis([0,7,-2,2]);subplot(2,2,2);stairs(x,y,'b');title('stairs(x,y,''b'')');axis([0,7,-2,2]);subplot(2,2,3);stem(x,y,'k');title('stem(x,y,''k'')');axis([0,7,-2,2]);subplot(2,2,4);fill(x,y,'y');title('fill(x,y,''y'')');axis([0,7,-2,2]); MATLAB提供的统计分析绘图函数还有很多,例如,用来表示各元素占总和的百分比的饼图、复数的相量图等等。 例1-14 绘制图形: (1) 某企业全年各季度的产值(单位:万元)分别为:2347,1827,2043,3025,试用饼图作统计分析。 (2) 绘制复数的相量图:7+29i、2-3i和-15-6i。 程序如下:subplot(1,2,1);pie([2347,1827,2043,3025]);title('饼图'); legend('一季度','二季度','三季度','四季度'); subplot(1,2,2);compass([7+29i,2-3i,-15-6i]);title('相量图'); 三。 隐函数绘图MATLAB提供了一个ezplot函数绘制隐函数图形,下面介绍其用法。 (1) 对于函数f = f(x),ezplot函数的调用格式为: ezplot(f):在默认区间-2π<x<2π绘制f = f(x)的图形。 ezplot(f, [a,b]):在区间a<x<b绘制f = f(x)的图形。 (2) 对于隐函数f = f(x,y),ezplot函数的调用格式为: ezplot(f):在默认区间-2π<x<2π和-2π<y<2π绘制f(x,y) = 0的图形。 ezplot(f, [xmin,xmax,ymin,ymax]):在区间xmin<x<xmax和ymin<y<ymax绘制f(x,y) = 0的图形。 ezplot(f, [a,b]):在区间a<x<b和a<y< b绘制f(x,y) = 0的图形。 (3) 对于参数方程 x = x(t)和y = y(t),ezplot函数的调用格式为: ezplot(x,y):在默认区间0<t<2π绘制x=x(t)和y=y(t)的图形。 ezplot(x,y, [tmin,tmax]):在区间tmin < t < tmax绘制x=x(t)和y=y(t)的图形。 例1-15 隐函数绘图应用 举例。 程序如下:subplot(2,2,1);ezplot('x^2+y^2-9');axis equalsubplot(2,2,2);ezplot('x^3+y^3-5xy+1/5')subplot(2,2,3);ezplot('cos(tan(pix))',[ 0,1])subplot(2,2,4);ezplot('8cos(t)','4sqrt(2)sin(t)',[0,2pi]) 四。三维图形41 三维曲线 plot3函数与plot函数用法十分相似,其调用格式为: plot3(x1,y1,z1,选项1,x2,y2,z2,选项2,…,xn,yn,zn,选项n) 其中每一组x,y,z组成一组曲线的坐标参数,选项的定义和plot函数相同。当x,y,z是同维向量时,则x,y,z 对应元素构成一条三维曲线。当x,y,z是同维矩阵时,则以x,y,z对应列元素绘制三维曲线,曲线条数等于矩阵列数。 例1-16 绘制三维曲线。 程序如下:t=0:pi/100:20pi;x=sin(t);y=cos(t);z=tsin(t)cos(t);plot3(x,y,z);title('Line in 3-D Space');xlabel('X');ylabel('Y');zlabel('Z');grid on; 42 三维曲面 1.产生三维数据 在MATLAB中,利用meshgrid函数产生平面区域内的网格坐标矩阵。其格式为: x=a:d1:b; y=c:d2:d;[X,Y]=meshgrid(x,y);语句执行后,矩阵X的每一行都是向量x,行数等于向量y的元素的个数,矩阵Y的每一列都是向量y,列数等于向量x的元素的个数。 2.绘制三维曲面的函数 surf函数和mesh函数的调用格式为: mesh(x,y,z,c)surf(x,y,z,c)一般情况下,x,y,z是维数相同的矩阵。x,y是网格坐标矩阵,z是网格点上的高度矩阵,c用于指定在不同高度下的颜色范围。 例1-17 绘制三维曲面图z=sin(x+sin(y))-x/10。 程序如下:[x,y]=meshgrid(0:025:4pi);z=sin(x+sin(y))-x/10;mesh(x,y,z);axis([0 4pi 0 4pi -25 1]);此外,还有带等高线的三维网格曲面函数meshc和带底座的三维网格曲面函数meshz。其用法与mesh类似,不同的是meshc还在xy平面上绘制曲面在z轴方向的等高线,meshz还在xy平面上绘制曲面的底座。 例1-18 在xy平面内选择区域[-8,8]×[-8,8],绘制4种三维曲面图。 程序如下:[x,y]=meshgrid(-8:05:8);z=sin(sqrt(x^2+y^2))/sqrt(x^2+y^2+eps);subplot(2,2,1);mesh(x,y,z);title('mesh(x,y,z)')subplot(2,2,2);meshc(x,y,z);title('meshc(x,y,z)')subplot(2,2,3);meshz(x,y,z)title('meshz(x,y,z)')subplot(2,2,4);surf(x,y,z);title('surf(x,y,z)') 3.标准三维曲面 sphere函数的调用格式为: [x,y,z]=sphere(n)cylinder函数的调用格式为: [x,y,z]= cylinder(R,n)MATLAB还有一个peaks 函数,称为多峰函数,常用于三维曲面的演示。 <!--[if !supportEmptyParas]--> <!--[endif]-->例1-19 绘制标准三维曲面图形。 程序如下:t=0:pi/20:2pi;[x,y,z]= cylinder(2+sin(t),30);subplot(2,2,1);surf(x,y,z);subplot(2,2,2);[x,y,z]=sphere;surf(x,y,z);subplot(2,1,2);[x,y,z]=peaks(30); surf(x,y,z);<!--[if !supportEmptyParas]--> <!--[endif]-->43 其他三维图形 在介绍二维图形时,曾提到条形图、杆图、饼图和填充图等特殊图形,它们还可以以三维形式出现,使用的函数分别是bar3、stem3、pie3 和fill3。 bar3函数绘制三维条形图,常用格式为: bar3(y)bar3(x,y) stem3函数绘制离散序列数据的三维杆图,常用格式为: stem3(z)stem3(x,y,z)pie3函数绘制三维饼图,常用格式为: pie3(x)fill3函数等效于三维函数fill,可在三维空间内绘制出填充过的多边形,常用格式为: fill3(x,y,z,c)<!--[if !supportEmptyParas]--> <!--[endif]-->例1-20 绘制三维图形: (1) 绘制魔方阵的三维条形图。 (2) 以三维杆图形式绘制曲线y=2sin(x)。 (3) 已知x=[2347,1827,2043,3025],绘制饼图。 (4) 用随机的顶点坐标值画出五个**三角形。 程序如下:subplot(2,2,1);bar3(magic(4))subplot(2,2,2);y=2sin(0:pi/10:2pi);stem3(y);subplot(2,2,3);pie3([2347,1827,2043,3025]);subplot(2,2,4);fill3(rand(3,5),rand(3,5),rand(3,5), 'y' ) 例1-21 绘制多峰函数的瀑布图和等高线图。 程序如下:subplot(1,2,1);[X,Y,Z]=peaks(30);waterfall(X,Y,Z)xlabel('X-axis'),ylabel('Y-axis'),zlabel('Z-axis');subplot(1,2,2);contour3(X,Y,Z,12,'k'); %其中12代表高度的等级数 xlabel('X-axis'),ylabel('Y-axis'),zlabel('Z-axis');<!--[if !supportEmptyParas]--> 五。 图形修饰处理51 视点处理 MATLAB提供了设置视点的函数view,其调用格式为: view(az,el)其中az为方位角,el为仰角,它们均以度为单位。系统缺省的视点定义为方位角-375°,仰角30°。 例5-22 从不同视点观察三维曲线。 52 色彩处理 1.颜色的向量表示 MATLAB除用字符表示颜色外,还可以用含有3个元素的向量表示颜色。向量元素在[0,1]范围取值,3个元素分别表示红、绿、蓝3种颜色的相对亮度,称为RGB三元组。 <!--[if !supportEmptyParas]--> <!--[endif]-->2.色图 色图(Color map)是MATLAB系统引入的概念。在MATLAB中,每个图形窗口只能有一个色图。色图是m×3 的数值矩阵,它的每一行是RGB三元组。色图矩阵可以人为地生成,也可以调用MATLAB提供的函数来定义色图矩阵。 3.三维表面图形的着色 三维表面图实际上就是在网格图的每一个网格片上涂上颜色。surf函数用缺省的着色方式对网格片着色。除此之外,还可以用shading命令来改变着色方式。 shading faceted命令将每个网格片用其高度对应的颜色进行着色,但网格线仍保留着,其颜色是黑色。这是系统的缺省着色方式。 shading flat命令将每个网格片用同一个颜色进行着色,且网格线也用相应的颜色,从而使得图形表面显得更加光滑。 shading interp命令在网格片内采用颜色插值处理,得出的表面图显得最光滑。 例1-23 3种图形着色方式的效果展示。 程序如下:[x,y,z]=sphere(20);colormap(copper);subplot(1,3,1);surf(x,y,z);axis equalsubplot(1,3,2);surf(x,y,z);shading flat;axis equalsubplot(1,3,3);surf(x,y,z);shading interp;axis equal 53 光照处理 MATLAB提供了灯光设置的函数,其调用格式为: light('Color',选项1,'Style',选项2,'Position',选项3) <!--[if !supportEmptyParas]--> <!--[endif]-->例5-24 光照处理后的球面。 程序如下:[x,y,z]=sphere(20);subplot(1,2,1);surf(x,y,z);axis equal;light('Posi',[0,1,1]);shading interp;hold on;plot3(0,1,1,'p');text(0,1,1,' light');subplot(1,2,2);surf(x,y,z);axis equal;light('Posi',[1,0,1]);shading interp;hold on;plot3(1,0,1,'p');text(1,0,1,' light'); 54 图形的裁剪处理 例5-25 绘制三维曲面图,并进行插值着色处理,裁掉图中x和y都小于0部分。 程序如下:[x,y]=meshgrid(-5:01:5);z=cos(x)cos(y)exp(-sqrt(x^2+y^2)/4);surf(x,y,z);shading interp;pause %程序暂停 i=find(x<=0&y<=0);z1=z;z1(i)=NaN;surf(x,y,z1);shading interp;为了展示裁剪效果,第一个曲面绘制完成后暂停,然后显示裁剪后的曲面。 六。图像处理 与动画制作61 图像处理 1.imread和imwrite函数 imread和imwrite函数分别用于将图像文件 读入MATLAB工作空间,以及将图像数据和色图数据一起写入一定格式的图像文件。MATLAB支持多种图像文件格式,如bmp、jpg、jpeg、tif等。 2.image和imagesc函数 这两个函数用于图像显示。为了保证图像的显示效果,一般还应使用colormap函数设置图像色图。 例1-26 有一图像文件flowerjpg,在图形窗口显示该图像。 程序如下:[x,cmap]=imread('flowerjpg'); %读取图像的数据阵和色图阵 image(x);colormap(cmap);axis image off %保持宽高比并取消坐标轴 62 动画制作 MATLAB提供getframe、moviein和movie函数进行动画制作。 1.getframe函数 getframe函数可截取一幅画面信息(称为动画中的一帧),一幅画面信息形成一个很大的列向量。显然,保存 n幅图面就需一个大矩阵。 2.moviein函数 moviein(n)函数用来建立一个足够大的n列矩阵。该矩阵用来保存n幅画面的数据,以备播放。之所以要事先建立一个大矩阵,是为了提高程序运行 速度。 3.movie函数 movie(m,n)函数播放由矩阵m所定义的画面n次,缺省时播放一次。 例1-27 绘制了peaks函数曲面并且将它绕z轴旋转。 程序如下[X,Y,Z]=peaks(30); surf(X,Y,Z)axis([-3,3,-3,3,-10,10])axis off;shading interp;colormap(hot);m=moviein(20); %建立一个20列大矩阵 for i=1:20view(-375+24(i-1),30) %改变视点 m(:,i)=getframe; %将图形保存到m矩阵 end movie(m,2); %播放画面2次

使用matlab时括号莫名其妙出现红色波浪线提示,如下所示:

提示在括号处出现解析错误。

首先检查了语法,又检查了括号也是英文格式的,不知道为什么会出现提示“使用的MATLAB语法可能无效”。

!!!!!!后来发现是:后面忘记加“,”了,记录一下,长个记性吧!!!!!!!

大多数情况下,一定是有“因果”的,细心,冷静。

打开CSDN,阅读体验更佳

matlab中波浪号~的作用和用法_海晨威的博客_matlab ~

另外,matlab中不等号的写法是:~= 第二是代表忽略输出参数,如unique函数有三个输出参数,而我们只需要第二个参数,那可以这样: [~,rank,~]=unique(array,'rows'); 代表我们忽略了第一和第三个参数,而如果我们不加波浪号的话 rank

继续访问

matlab 中的波浪号_武科大许志伟的博客_matlab波浪号

在matlab中,波浪号 ~主要有两个用法: 第一是代表与或非中的非,如在以下代码中: if ~flag …… end 意为只有在flag为0或false时,才会执行省略号对应的部分 另外,matlab中不等号的写法是:~= 第二是代表忽略输出参数,如unique函

继续访问

Matlab常见语法错误及解决方法

Matlab常见语法错误及解决方法及其解决方式。呵呵呵你

Matlab 中一些符号的含义

详细介绍了MATLAB中各种符号的含义和用法

matlab出现红色括号,想让大家看下标红地方为什么说有括号问题

MATLAB特征提取代码for i=1:26f=strcat('D:\bishe\',num2str(i)); image=strcat(f,'jpg'); PS=imread(image);PS=imresize(PS,[300,300],'bilinear');%归一化大小PS=rgb2gray(PS);[m,n]=size(PS); %测量图像尺寸参数GP=zeros(1,256);

继续访问

MATLAB常见语法错误分析及解决办法

1Subscript indices must either be real positive integers or logicals 中文解释:下标索引必须是正整数类型或者逻辑类型 出错原因:在访问矩阵(包括向量、二维矩阵、多维数组,下同)的过程中,下标索引要么从 0 开始,要么出现了负数。注:matlab 的语法规定矩阵的索引从 1 开始,这与 C 等编程语言的习惯不一样。 解决办法

继续访问

Matlab错误:表达式无效。请检查缺失的乘法运算符、缺失或不对称的分隔符或者其他语法错误。要构造矩阵,请使用方括号而不是圆括号。

错误:表达式无效。请检查缺失的乘法运算符、缺失或不对称的分隔符或者其他语法错误。要构造矩阵,请使用方括号而不是圆括号。 原因:选中了matlab右侧工作区的变量空间,叉掉去即可。

继续访问

matlab:在FUNCTION处出现解析错误:使用的MATLAB语法可能无效。

在matlab创建函数时候,出现在FUNCTION处出现解析错误:使用的MATLAB语法可能无效的错误,如图 这是因为你没有将自己定义的函数放到单独的一个m文件里面,例如我要创建一个名为Butterworth_low(I_in)的函数,且我要在am里面调用它,我就不能将该函数写在am文件里面,而需要将该文件放在一个单独的m文件,并把该文件置于与am文件相同的路径下。要调用时候直接使用函数名加上相关参数调用即可。 如下图:

继续访问

第二周整理 matlab入门

等号下面有波浪线警告,提示可能出现错误,需要加分号(问题不大) 加入分号后,x=5和y=7 会自动屏蔽不显示 %f表示输出的量是数字,其值为 “F” 在%f后面加上 /n 表示换行 将 %f 改成 %g 则算术式中的小数点后多余的零会被清除 Comment注释符号 即图示的绿色的 % 符号 表示被选中程序不运行 && 符号表示 和 ; || 符号表示 或 数字与字母之间的乘号也不可省略 disp 和 fprintf 作用是一样的,只是没那么正式 多重元

继续访问

MATLAB等号错误为啥,Matlab常见错误及解决办法归纳

Matlab常见错误及解决办法归纳1Subscript indices must either be real positive integers or logicals中文解释:下标索引必须是正整数类型或者逻辑类型出错原因:在访问矩阵(包括向量、二维矩阵、多维数组,下同)的过程中,下标索引要么从 0 开始,要么出现了负数。注:matlab 的语法规定矩阵的索引从 1 开始,这与 C 等编程语言

继续访问

最新发布 这个代码最后一段中有两个我标红的end,报错显示在end处出现解析错误:使用的MATLAB语法可能无效。这是哪里出了问题,希望有了解的人可以回复我一下,万分感谢

ELT=[0,72]; %%出发时间 start=0; %%提前或延期惩罚 ELP=[0,300]; %%碳排放 CO=[00556,00165,00133]; %重量 Q=4; %出发城市编号 O=13; %目标城市编号 OD=17; %% 初始化参数 NIND=20; %种群大小 Max Gen=100; %最大迭代次数 Pc=08; %交叉概率 Pm=08; %变异概率

继续访问

matlab a1处语法无效,MATLAB常见错误

1 在GUI子程序的OpeningFcn函数的结尾加上uiwait(handlesfigure1); figure1是subGUI的Tag;2 subGUI中控制程序结束(如"OK"和"Cancel"按钮)的callback末尾加上uiresume(handlesfigure1),不要将delete命令放在这些callback中;3 在子GUI的OutputFcn中设置要传递出去的参数,

继续访问

matlab波浪号怎么打,数学中字母上面波浪号 波浪号怎么打到上面

其实都是一些规定。这些规定在高中以下是用不到的。一般是数学专业本科有关课程会用到。一般是某个集合或概念衍生的一个概念,为了区别而加了波浪线。字母上面加一波浪线是数学中的全等于。扩展资料:数学如:三角形ABC≌三角形DEF(表示三角形ABC与三角形DEF能完全重合)折叠编辑本段程序设计全等于是程序设计的一种字母上面的波浪线怎么打不用公式编辑器,如图所示,就是x上面的那个波浪我试了一下合并字符

继续访问

热门推荐 Matlab括号使用详解

Matlab中用括号去引用某Array或者是cell的内容,三者的区别: 大括号 用于单元阵列的赋值 中括号 用于形成一个向量或矩阵 小括号 通常用于一般的算术表达式,指示优先运算,还用于表示函数变量、向量下标和矩阵下标等到 [ ] 中括号用来构建向量(Vectors)或者是矩阵(Matrices)。如[69 964 sqrt(-1)] 就是一个有三个元素的

继续访问

matlab中等号前面的波浪线,WORD使用中的常见问题问答讲述doc

WORD使用中的常见问题问答流星雨 发表于: 2007-12-07 11:45 来源: 苍梧晚报社区门户在科研工作中,我们发现学术资源共享途径、文献检索工具、文本编辑技巧、软件使用窍门都是非常重要的辅助工具,善于利用这些途径和技巧,广泛传承前人宝贵经验,往往会起到事半功倍的效果,也是打造学术交流与知识共享的重要平台。而长期以来,这些宝贵的窍门和经验处于孤岛状态,实在是非常可惜。本人特将飘渺水云间众

继续访问

matlab在ydown出现解析错误,竟然遇到了一个MATLAB也解决不了的问题

最近在做一个闭合曲线拟合的问题,手头有一些二维离散点的数据,大概长这样:我想要把这样不完全闭合的曲线给补齐成闭合的曲线,脑补一下:研究了半天,发现MATLAB的拟合工具箱虽然强大,但是只能拟合常规的函数曲线。无奈,只能转向求助于python。首先第一步,发挥下MATLAB的余热,把离散点的x和y坐标保存至mat文件:pts = [x y];save('ptsmat', 'pts')下一步,打开A

继续访问

matlab a1处语法无效,检查 MATLAB 代码文件是否有问题

通过创建并指定设置文件,隐藏特定消息。例如,文件 lengthoflinem 中有多个行使用 | 而不是 || 作为 OR 运算符。默认情况下,checkcode 会标记这些行。checkcode('lengthofline')L 21 (C 1-9): The value assigned to variable 'nothandle' might be unusedL 22 (C 12-1

继续访问

MATLAB常见语法错误

记得阅读MATLAB提醒你的错误很重要! 1Index must be a positive integer or logical 中文:索引必须是正整数或logical的类型 出错场合:矩阵的下标操作等 出错原因:不同于java,C++,MATLAB的索引下标是从1开始的,而非0。 下标不能是0,分数,负数 2Undefined function or variable “B” 中文:一个变量B没有定义或没有B这样一个函数 解决思路:查看工作空间是否有B这样一个变量或从当前的工作路径去查看是否有B这

继续访问

matlab写一个简单的bar表格,显示‘set’输入参数无效怎么回事

G = [46 38 29 24 13]; S = [29 27 17 26 8]; B = [29 23 19 32 7]; h = bar(1:5, [G' S' B']); title('Medal count for top 5 countries in 2012 Olympics');set(gca,'xticklabel',{'USA','CHN','RUS','JAP','KOR'}

继续访问

matlab在tic处出现解析错误,破除“解析包时出现错误”方法大全,全部都在这了!

原标题:破除“解析包时出现错误”方法大全,全部都在这了!相信许多使用Android设备的用户都会或多或少的遇到到这样的问题:解析包时出现错误。那么遇到这样的问题该如何解决其实导致apk程序安装失败的原因是多方面的,而这所有的错误都基本归结于一点“解析包时出现错误”,因此,我们只有采取逐个排查的方法来找到apk程序不能安装的原因。 下面小编将给大家支几招解决此类问题的方法。方法一:通过正规的途径、

继续访问

MATLAB中波浪线的作用

1、第一是代表与或非中的非,如在以下代码中: 只有在flag为0或false时,才会执行省略号对应的部分。 matlab中不等号的写法是:~= if ~flag …… end 2、代表忽略输出参数,如unique函数有三个输出参数,而我们只需要第二个参数,那可以这样: [~,rank,~]=unique(array,'rows'); 代表我们忽略了第一和第三个参数,而如果我们不加波浪号的话这表示接收第一个参数,就不是我们想要的啦。 rank=unique(array,'rows');

继续访问

matlab中等于号下面出现红波浪

写评论

评论

前言:

感谢微信群的各位大牛们和忆臻学长的帮助,让我能够完成这个文章。这个文章的开始是这一段时间看到我周围的小伙伴在跟很多的妹子聊天后总是无疾而终,过程虽然有所不同,但是起点和终点大致相同,联想到以前看过的炮灰模型(前半部分是炮灰模型),所以我想能不能可以用一些统计学的方法去概述这个现象并且发现这其中的规律,以便让广大的男屌丝们找到自己合适的另一半。

众所周知生活中涉及到感情的事情是很复杂的,把所有可能影响的因素都考虑到几乎是不可能的。为此我们先对现实进行简化,并做出一些合理的假设,考虑比较简单的一种情况。

为了将实际复杂的问题进行简化,我们做出下面几条合理的假设:

1、 假设一个女生愿意在一段时间中和一位男生开始一段感情,并且在这段时间中有N个男生追求这位女生。N个男生以不同的先后顺序向女生表白,即在任一时刻不存在两个或两个以上的男生向这位女生表白的情况的发生,而且任何一种顺序都是完全等概率的。

2、 面对表白后的男生,女生只能做出接受和拒绝两种选择,不存在暧昧或者其它选择。

3、 任一时刻,女生最多只能和一位男生谈恋爱,不存在脚踏多船的情况。

4、 已经被拒绝的男生不会再次追求这位女生。

基于上述假设,我们想要找到这样一种策略,使得女生以最大的概率在第一次选择接受

的那个男生就是N。

先考虑最简单的一种策略,如果一旦有男生向女生表白,女生就选择接受。这种策略下显然女生以1/N的概率找到自己的Mr Right。当N比较大的时候,这个概率就很小了,显然这种策略不是最优的。

基于上面这些假设和模型,我们提出这样一种策略:对于最先表白的M个人,无论女生感觉如何都选择拒绝;以后遇到男生向女生表白的情况,只要这个男生的编号比前面M个男生的编号都大,即这个男生比前面M个男生更适合女生,那么女生选择接受,否则选择拒绝。

下面以N=3为例说明:

三个男生追求女生,共有六种排列方式:

1 2 3

1 3 2

2 1 3

2 3 1

3 1 2

3 2 1

如果女生采用上述最简单的策略,那么只有最后两种排列方式选择到Mr Right,概率为2/3!=1/3。

如果女生采用上面我们提出的策略,这里我们取M=1,即无论第一个人是否优秀,女生都选择拒绝。然后对于之后的追求者,只要他比第一个男生更适合女生就选择接受,否则拒绝。基于这种策略,“1 3 2”、“2 1 3”、“2 3 1”这三种排列顺序下女生都会在第一次做出接受的选择时遇到“3”,这样我们就把这种概率增大到3/3!=1/2。

现在我们的问题就归结为,对于一般的N,什么样的M才会使这种概率达到最大值呢?(在这种模型中,前面M个男生就被称为“炮灰”,无论他们有多么优秀都要被拒绝)

模型建立:

在这一部分中,根据上面的模型假设,我们先找到对于给定的M和N(1

1到N个数字进行排列共有N!种可能。当数字N出现在第P位置(M

1、N在第P位置

2、从M+1到P-1位置的数字要比前M位置的最大数字要小

运用数学中排列组合的知识,不难知道符合上面两个条件的排列共有

这样对于给定的M和N,P可以从M+1到N变化,求和化简后得到给定M和N共有

种序列符合要求。

由此得到女生选择接受时遇到Mr Right的概率为

模型求解:(不感兴趣的话可以直接跳过这部分推导)

这一部分中我们求解使这个表达式取得最大值时M的值。

记函数

,且设自变量取值为M时,函数取得最大值。

因此:

所以M应满足

我们知道,当x>0, In(1+x)< x ;

当x-->0, In(1+x) ~ x。

所以由左不等式

所以:

当N比较大时,同理由右不等式可得M≈N/e,以上e为自然对数。

若记[x]为不大于x的最大整数,由以上推导我们可猜测当M取[N/e]或[N/e]+1时,该表达式取得最大值。

用MATLAB仿真,上述结论正确。

结果分析:

由上述分析可以得到如下结论:为了使一个女生以最大的概率在第一次选择接受男生时遇到的正是Mr Right,女生应该采用以下的策略:

拒绝前 M=[N/e] 或者 [N/e]+1 个追求者,当其后的追求者比前 M 个追求者更适合则接受,否则拒绝。

现在到结婚的问题上:

现在给我们的问题是,如果一对男女朋友,男生想女生求婚,男生的四个特点分别是不帅,性格不好,身高矮,不上进,请你判断一下女生是嫁还是不嫁?

这是一个典型的分类问题,转为数学问题就是比较p(嫁|(不帅、性格不好、身高矮、不上进))与p(不嫁|(不帅、性格不好、身高矮、不上进))的概率,谁的概率大,我就能给出嫁或者不嫁的答案!

我们需要求p(嫁|(不帅、性格不好、身高矮、不上进),这是我们不知道的,但是通过朴素贝叶斯公式可以转化为好求的三个量

p(不帅、性格不好、身高矮、不上进|嫁)、p(不帅、性格不好、身高矮、不上进)、p(嫁)(至于为什么能求,后面会讲,那么就太好了,将待求的量转化为其它可求的值,这就相当于解决了我们的问题!)

那么这三个量是如何求得?

是根据已知训练数据统计得来,下面详细给出该例子的求解过程。

回忆一下我们要求的公式如下:

那么我只要求得p(不帅、性格不好、身高矮、不上进|嫁)、p(不帅、性格不好、身高矮、不上进)、p(嫁)即可,好的,下面我分别求出这几个概率,最后一比,就得到最终结果。

p(不帅、性格不好、身高矮、不上进|嫁) = p(不帅|嫁)p(性格不好|嫁)p(身高矮|嫁)p(不上进|嫁),那么我就要分别统计后面几个概率,也就得到了左边的概率!

等等,为什么这个成立呢?学过概率论的同学可能有感觉了,这个等式成立的条件需要特征之间相互独立吧!

但是为什么需要假设特征之间相互独立呢?

1、我们这么想,假如没有这个假设,那么我们对右边这些概率的估计其实是不可做的,这么说,我们这个例子有4个特征,其中帅包括{帅,不帅},性格包括{不好,好,爆好},身高包括{高,矮,中},上进包括{不上进,上进}, 那么四个特征的联合概率分布总共是4维空间,总个数为2332=36个。

36个,计算机扫描统计还可以,但是现实生活中,往往有非常多的特征,每一个特征的取值也是非常之多,那么通过统计来估计后面概率的值,变得几乎不可做,这也是为什么需要假设特征之间独立的原因。

2、假如我们没有假设特征之间相互独立,那么我们统计的时候,就需要在整个特征空间中去找,比如统计p(不帅、性格不好、身高矮、不上进|嫁),

我们就需要在嫁的条件下,去找四种特征全满足分别是不帅,性格不好,身高矮,不上进的人的个数,这样的话,由于数据的稀疏性,很容易统计到0的情况。 这样是不合适的。

好的,上面我解释了为什么可以拆成分开连乘形式。那么下面我们就开始求解!

我们将上面公式整理一下如下:

下面我将一个一个的进行统计计算(

在数据量很大的时候,根据中心极限定理,频率是等于概率的,这里只是一个例子,所以我就进行统计即可

)。

p(嫁)=?

首先我们整理训练数据中,嫁的样本数如下:

则p(嫁) = 6/12(总样本数)= 1/2

p(不帅|嫁)=?统计满足样本数如下:

则p(不帅|嫁) = 3/6 = 1/2在嫁的条件下,看不帅有多少

p(性格不好|嫁)=?统计满足样本数如下:

则p(性格不好|嫁)= 1/6

p(矮|嫁)= 统计满足样本数如下:

则p(矮|嫁) = 1/6

p(不上进|嫁) = 统计满足样本数如下:

则p(不上进|嫁) = 1/6

下面开始求分母,p(不帅),p(性格不好),p(矮),p(不上进)

统计样本如下:

不帅统计如上红色所示,占4个,那么p(不帅)= 4/12 = 1/3

性格不好统计如上红色所示,占4个,那么p(性格不好)= 4/12 = 1/3

身高矮统计如上红色所示,占7个,那么p(身高矮)= 7/12

不上进统计如上红色所示,占4个,那么p(不上进)= 4/12 = 1/3

到这里,要求p(不帅、性格不好、身高矮、不上进|嫁)的所需项全部求出来了,下面我带入进去即可,

下面我们根据同样的方法来求p(不嫁|不帅,性格不好,身高矮,不上进),完全一样的做法,为了方便理解,我这里也走一遍帮助理解。首先公式如下:

下面我也一个一个来进行统计计算,这里与上面公式中,分母是一样的,于是我们分母不需要重新统计计算!

p(不嫁)=?根据统计计算如下( 红色为满足条件 ):

则p(不嫁)=6/12 = 1/2

p(不帅|不嫁) =?统计满足条件的样本如下( 红色为满足条件 ):

则p(不帅|不嫁)= 1/6

p(性格不好|不嫁)=?据统计计算如下( 红色为满足条件 ):

则p(性格不好|不嫁)=3/6 = 1/2

p(矮|不嫁)=?据统计计算如下(红色为满足条件):

则p(矮|不嫁)= 6/6 = 1

p(不上进|不嫁)=?据统计计算如下(红色为满足条件):

则p(不上进|不嫁)= 3/6 = 1/2

那么根据公式:

p (不嫁|不帅、性格不好、身高矮、不上进) = ((1/61/211/2)1/2)/(1/31/37/121/3)

很显然(1/61/211/2) > (1/21/61/61/61/2)

于是有p (不嫁|不帅、性格不好、身高矮、不上进)>p (嫁|不帅、性格不好、身高矮、不上进)

所以我们根据贝叶斯算法可以给这个女生答案,是不嫁!!!!

看完之后,我又简单想了一下,在炮灰模型中,前M个男生就成了炮灰的角色,无论其有多么优秀,都会被拒绝

设女性最为灿烂的青春为18-28岁,在这段时间中将会遇到一生中几乎全部的追求者(之前之后的忽略不计),且追求者均匀分布,则女性从18+10/e=217即22岁左右开始接受追求……这告诉我们,想谈恋爱找大四的……

在文章中只考虑了N个男生表白的先后顺序是完全随机的,并没有考虑相邻两次之间的时间隔。如果把时间因素也考虑进去的话,在一个相对较短的时间中,可以近似的假设为齐次泊松过程,这样不仅可以得出女生应该选择上面的第M个男生的结论,而且找到男生表白的最佳时间在t=T/e时刻。 例如如果取时间段为大学四年的话,则T/e=14715。 也就是说,在大学四年里,男生表白的最佳时刻在第三个学期的期末或寒假

如果这个时间段较长的话,那么男生追求可近似假设为了一个非齐次泊松过程,或者分段齐次泊松过程,具体建模中对各段参数lamma的估计就比较困难了,而且每个人以后的经历都会不同,不太可能找到一个统一的参数集。

朋友,如果你追求一个女生而遭到拒绝,看完这篇文章后你会突然发现,也许这不是你的的错,也许你真的很优秀,只是很不幸,你成了“炮灰”。

希望上面这些看似复杂的推导和模型对你能有所启发。不要因为一次的拒绝而伤心、失落,振作起来

欢迎分享,转载请注明来源:表白网

原文地址:https://h5.hunlipic.com/biaobai/3997291.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2024-04-08
下一篇2024-04-08

发表评论

登录后才能评论

评论列表(0条)

    保存