当前位置:   article > 正文

MATLAB--数学建模作图大全及代码说明_数学建模matlab程序大全

数学建模matlab程序大全

目录

1、二维曲线

2、二维渐变图

3、二维散点图

 4、条形图

5、填充图

6、多Y轴图

7、三维曲线图

8、三维散点图

9、三维伪彩图

10、裁剪伪彩图

11、等高线图

12、三维等高线图

13、等高线填充图

14、三维矢量场图

15、伪彩图+投影图

16、热图

17、分子模型图

18、分形图


1、二维曲线

二维曲线算是最最常见的一种曲线了,它能反应两个变量的因果关系。

  1. clear;
  2. clc;
  3. close all;
  4. x=linspace(1,200,100); %均匀生成数字1-200,共计100
  5. y1=log(x)+1; %生成函数y=log(x)+1
  6. y2=log(x)+2; %生成函数y=log(x)+2
  7. figure;
  8. plot(x,y1); %作图 y=log(x)+1
  9. hold on
  10. plot(x,y2,'LineWidth',2); %作图 y=log(x)+2,LineWidth指线性的宽度,粗细尺寸2
  11. hold off %关闭多图共存在一个窗口上
  12. legend('y1','y2'); %生成图例y1和y2

 

2、二维渐变图

用不同的颜色、数据点大小表征不同数值,更加直观。

  1. x=linspace(0,3*pi,200);
  2. y=cos(x)+rand(1,200); %随机生成1*200,位于[0,1]的数字
  3. sz=25;%尺寸为25
  4. c=linspace(1,10,length(x));
  5. scatter(x,y,sz,c,'filled')

3、二维散点图

常用来比较理论数据和实验数据的趋势关系。

  1. figure;
  2. x=linspace(1,200,100)
  3. y1=log(x)+1;
  4. y3=y1+rand(1,100)-0.5;
  5. plot(x,y1,'LineWidth',2,'Color',[0.21,0.21,0.67]);
  6. hold on;
  7. %设置数据点的型状、数据点的填充颜色、数据点的轮廓颜色
  8. plot(x,y3,'o','LineWidth',2,'Color',[0.46,0.63,0.90],'MarkerFaceColor',[0.35,0.90,0.89],'MarkerEdgeColor',[0.18,0.62,0.17]);
  9. hold off;

 4、条形图

  1. A=[60.689;87.714;143.1;267.9515];
  2. C=[127.5;160.4;231.9;400.2];
  3. B=C-A;
  4. D=[A,B,C];
  5. bar1=bar([2:5:17],A,'BarWidth',0.2,'FaceColor','k');
  6. hold on;
  7. bar2=bar([3:5:18],B,'BarWidth',0.2,'FaceColor',[0.5 0.5 0.5]);
  8. hold on;
  9. bar3=bar([4:5:19],C,'BarWidth',0.2,'FaceColor','w');
  10. ylabel('耗时/s');
  11. xlabel('GMM阶数');
  12. legend('训练耗时','测试耗时','总耗时');
  13. labelID={'8阶','16阶','32阶','64阶'};
  14. set(gca,'XTick',3:5:20);

5、填充图

  1. x=0.4:0.1:2*pi;
  2. y1=sin(2*x);
  3. y2=sin(x);
  4. %确定有y1和y2的上下边界
  5. maxY=max([y1;y2]);
  6. minY=min([y1;y2]);
  7. %确定填充多边形,按照顺时针方向来确定点
  8. %fliplr实现左右翻转
  9. xFill=[x,fliplr(x)];
  10. yFill=[maxY,fliplr(minY)];
  11. figure;
  12. fill(xFill,yFill,[0.21,0.21,0.67]);
  13. hold on;
  14. %描绘轮廓线
  15. plot(x,y1,'k','LineWidth',2);
  16. plot(x,y2,'k','LineWidth',2);
  17. hold off;

6、多Y轴图

  1. figure;
  2. load('accidents.mat','hwydata');
  3. ind=1:51;
  4. drivers=hwydata(:,5);
  5. yyaxis left;
  6. scatter(ind,drivers,'LineWidth',2);
  7. title('Highway Data');
  8. xlabel('States');
  9. ylabel('Licensed Drivers(thousands)');
  10. pop=hwydata(:,7);
  11. yyaxis right;
  12. scatter(ind,pop,'LineWidth',2);
  13. ylabel('Vehicle Miles Traveled(millions)');

7、三维曲线图

  1. figure;
  2. t=0:pi/20:10*pi;
  3. xt=sin(t);
  4. yt=cos(t);
  5. plot3(xt,yt,t,'-o','Color','b','MarkerSize',10);

  1. figure;
  2. x=-20:10:20;
  3. y=0:100;
  4. %随便生成的五组数据,也就是目标图上的5条曲线数据
  5. z=zeros(5,101);
  6. z(1,1:10:end)=linspace(1,10,11);
  7. z(2,1:10:end)=linspace(1,20,11);
  8. z(3,1:10:end)=linspace(1,5,11);
  9. z(4,5:10:end)=linspace(1,10,10);
  10. z(5,80:2:end)=linspace(1,5,11);
  11. for i=1:5
  12. %x方向每条曲线都是一个值,重复y的长度这么多次
  13. xx=x(i)*ones(1,101);
  14. %z方向的值,每次取一条
  15. zz=z(i,:);
  16. %plot3在xyz空间绘制曲线,保证xyz的长度一致即可
  17. plot3(xx,y,zz,'LineWidth',2);
  18. hold on
  19. end
  20. hold off;
  21. legend('line1','line2','line3','line4','line5');

8、三维散点图

  1. figure;
  2. [X,Y,Z]=sphere(16);
  3. x=[0.5*X(:);0.75*X(:);X(:)];
  4. y=[0.5*Y(:);0.75*Y(:);Y(:)];
  5. z=[0.5*Z(:);0.75*Z(:);Z(:)];
  6. S=repmat([70,50,20],numel(X),1);
  7. C=repmat([1,2,3],numel(X),1);
  8. s=S(:);
  9. c=C(:);
  10. h=scatter3(x,y,z,s,c);
  11. h.MarkerFaceColor=[0 0.5 0.5];

9、三维伪彩图

  1. [x,y,z]=peaks(30);
  2. figure;
  3. plot1=subplot(1,2,1);
  4. surf(x,y,z);
  5. %获取第一幅图的colormap,默认为parula
  6. plot2=subplot(1,2,2);
  7. surf(x,y,z);
  8. %下面设置的是第二幅图的颜色
  9. colormap(hot);
  10. %设置第一幅图颜色显示为parula

10、裁剪伪彩图

  1. figure;
  2. n=300;
  3. [x,y,z]=peaks(n);
  4. subplot(2,2 ,[1,3]);
  5. surf(x,y,z) ;
  6. shading interp;
  7. view(0,90);
  8. for i=1:n
  9. for j=1:n
  10. if x(i,j)^2+2*y(i,j)^2>6&&2*x(i,j)^2+y(i,j)^2<6
  11. z (i,j)=NaN;
  12. end
  13. end
  14. end
  15. subplot(2,2,2);
  16. surf(x,y,z);
  17. shading interp;
  18. view(0,90);
  19. subplot (2,2,4);
  20. surf(x,y,z);
  21. shading interp

11、等高线图

  1. figure;
  2. [X,Y,Z]=peaks;
  3. subplot(2,2,1);
  4. contour(X,Y,Z,20,'LineWidth',2);
  5. subplot(2,2,2);
  6. contour(X,Y,Z,'--','LineWidth', 2);
  7. subplot(2,2,3);
  8. v=[1,1];
  9. contour(X,Y,Z,v,'LineWidth',2);
  10. x = -2:0.2:2 ;
  11. y = -2 :0.2:3 ;
  12. [X,Y]=meshgrid(x,y);
  13. Z=X.*exp(-X.^2 -Y.^2 );
  14. subplot(2,2,4);
  15. contour(X,Y,Z,'ShowText','on','LineWidth',2);

12、三维等高线图

  1. figure('Position',[0,0,900,400]);
  2. subplot(1,3,1);
  3. [X,Y,Z]=sphere(50);
  4. contour3(X,Y,Z,'LineWidth',2);
  5. [X,Y]=meshgrid(-2:0.25:2);
  6. Z=X.*exp(-X.^2-Y.^2);
  7. subplot(1,3,2);
  8. contour3(X,Y,Z,[-0.2 -0.1 0.1 0.2],'ShowText','on','LineWidth',2);
  9. [X,Y,Z]=peaks;
  10. subplot(1,3,3);
  11. contour3(X,Y,Z,[2 2],'LineWidth',2);

13、等高线填充图

  1. figure;
  2. subplot(2,2,1);
  3. [X,Y,Z]=peaks(5);
  4. contour(X,Y,Z);
  5. subplot(2,2,2);
  6. contourf(X,Y,Z,'--');
  7. %限定范围
  8. subplot(2,2,3);
  9. contourf(X,Y,Z,[2 3],'ShowText','on');
  10. subplot(2,2,4);
  11. contourf(X,Y,Z,[2 2]);

14、三维矢量场图

  1. figure;
  2. [X,Y,Z]=peaks(30);
  3. %矢量场,曲面法线
  4. [U,V,W]=surfnorm(X,Y,Z);
  5. %箭头长度、颜色
  6. quiver3(X,Y,Z,U,V,W,0.5,'r');
  7. hold on;
  8. surf(X,Y,Z);
  9. xlim([-3,3]);
  10. ylim([-3,3.2]);
  11. shading interp;
  12. hold off;
  13. view(0,90);

15、伪彩图+投影图

  1. clear;clc;close all;
  2. x=linspace(-3,3,30);
  3. y=linspace(-4,4,40);
  4. [X,Y]=meshgrid(x,y);
  5. Z=peaks(X,Y);
  6. Z(5:10,15:20)=0;
  7. z1=max(Z);
  8. z2=max(Z,[],2);
  9. figure;
  10. subplot(3,3,[1,2]);
  11. plot(x,z1,'LineWidth',2);
  12. subplot(3 ,3 ,[6,9]);
  13. plot(z2,y,'LineWidth',2);
  14. subplot(3,3,[4,5,7,8]);
  15. surf(x,y,Z);
  16. xlim([-3,3]);
  17. ylim([-4,4]);
  18. view(0,90);
  19. shading interp; %平滑图像

16、热图

  1. clear;
  2. clc;
  3. z=rand(50);
  4. z(z>=0.0&z<0.6)=0.5;
  5. z(z>=0.6&z<0.8)=0.7;
  6. z(z>=0.8&z<=1)=0.9;
  7. for i=1:30
  8. z(randi(50,1,1):end,i)=nan;
  9. end
  10. for i=31:50
  11. z(30+randi(20,1,1):end,i)=nan;
  12. end
  13. z(20:25,40:45)=nan;
  14. figure;
  15. %ax=surf(z);
  16. ax=pcolor(z);
  17. view(0,90);
  18. ax.EdgeColor=[1 1 1];

17、分子模型图

  1. clear;
  2. clc;
  3. %球面的坐标信息,为了看起来平滑一点,给到100
  4. [x,y,z]=sphere(100);
  5. %C大小
  6. C=10;
  7. %H大小
  8. H=5;
  9. figure;
  10. %大球
  11. surf(C*x,C*y,C*z,'FaceColor','red','EdgeColor','none');
  12. hold on;
  13. %四个小球,都偏离一点位置,准确的位置需要计算,这里演示一个大概位置
  14. surf(H*x ,H*y,H*z+10,'FaceColor','blue','EdgeColor','none') ;
  15. surf(H*x+10,H*y,H*z-3,'FaceColor','blue','EdgeColor','none');
  16. surf(H*x-4,H*y-10,H*z-3,'FaceColor','blue','EdgeColor','none');
  17. surf(H*x-4,H*y+10,H*z-3,'FaceColor','blue','EdgeColor','none');
  18. %坐标轴设置
  19. axis equal off;
  20. %光源,看起来更有立体感
  21. light
  22. %lighting none,关闭光照

 

18、分形图

  1. clear;
  2. %不同的参数有不同的图形
  3. a=1.7;
  4. b=1.7;
  5. c=0.6;
  6. d=1.2;
  7. %a=1.5;b=-1.8;c=1.6;d=0.9;
  8. x=0;y=0;
  9. n=100000;
  10. kx=zeros(1,n);
  11. ky=zeros(1,n);
  12. %迭代循环
  13. for i=1:n
  14. tempx=sin(a*y)+c*cos(a*x);
  15. tempy=sin(b*x)+d*cos(b*y);
  16. %存入数组
  17. kx(i)=tempx;
  18. ky(i)=tempy;
  19. %重新赋值x,y
  20. x=tempx;
  21. y=tempy;
  22. end
  23. scatter(kx,ky,0.1,'green');

 scatter函数用法

●scatter( x ,y )在向量 x和y指定的位置创建一个包含圆形标记的散点图。

●要绘制一组坐标,请将 x和y指定为等长向量。

●要在同一组坐标区上绘制多组坐标,请将 x或 y中的至少一个指定为矩阵。

●s c a tt e r( x ,y ,s z )指定圆大小。要对所有圆使用相同的大小,请将sz指定为标量。要绘制不同大小的每个圆,请将 s z指定为向量或矩阵。

●scatter(x,y,sz,c)指定圆颜色。您可以为所有圆指定一种颜色,也可以更改颜色。例如,您可以通过将c指定为'red '来绘制所有红色圆。

●scatter( _ _ _ ,'f ille d ')填充圆。可以将'fille d '选项与前面语法中的任何输入参数组合一起使用。

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号