欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

2015数学建模国赛b题代码分析

程序员文章站 2022-07-12 20:50:33
...

所用代码出自2015年b285优秀论文,建模时可做参考

出租车数量 、 请求单数 、用户等待时间空间分布图 3D

distribute=xlsread('20150906distribute.csv'); 
Dis=[]; m1=17; 
for i=1:length(distribute) % 矩阵行和列的最大值    
    if (distribute(i,1)==m1)         
        [Dis]=[Dis; distribute(i,:)];     
    end
end
figure 
[x1]=Dis(:,2); % x坐标
[y1]=Dis(:,3); % y坐标
[z1]=Dis(:,4); % z坐标
nxDis=linspace(min(x1),max(x1),100); %最小值->最大值间的100个数据点
nyDis=linspace(min(y1),max(y1),100); 
[xx1,yy1]=meshgrid(nxDis,nyDis); %创建nxDis和nyDis的网格
[X1,Y1,Z1]=griddata(x1,y1,z1,xx1,yy1,'v4'); % 插值
surf(X1,Y1,Z1); % 三维曲面
%colormap gray; % 颜色
%axis equal; % 设置屏幕高宽比
xlabel('经度/°'); 
ylabel('纬度/°'); 
title('2015年9月6日高峰(17时)上海市出租车数量分布'); 
  • linspace(x1,x2,N)
    功 能:用于产生x1,x2之间的N点行矢量,相邻数据跨度相同。其中x1、x2、N分别为起始值、终止值、元素个数。若缺省N,默认点数为100。
    举例如下:
    X=linspace(5,100,20) % 产生从5到100范围内的20个数据,相邻数据跨度相同
    X =5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100
  • [A,B]=meshgrid(a,b)
    生成size(b)Xsize(a)大小的矩阵A和B。它相当于a从一行重复增加到size(b)行,把b转置成一列再重复增加到size(a)列。
  • griddata是matlab中的插值函数,’v4’是MATLAB自定义的 4 格点样条函数内插选项。
  • colormap gray:
    surf函数绘制表面图时自带的颜色就是由colormap决定的,使用默认parula来上色.MATLAB中默认自带了18中colormap,按照主题可分为:
    季节(summer,autumn,winter,spring)温度(hot,cool)材质(bone,copper)hues(pink,gray)颜色空间(hsv,colorcube-sort
    of)

:这段代码很有参考价值

A=[1.486,3.059,0.1;2.121,4.041,0.1;2.570,3.959,0.1;3.439,4.396,0.1;
4.505,3.012,0.1;3.402,1.604,0.1;2.570,2.065,0.1;2.150,1.970,0.1;
1.794,3.059,0.2;2.121,3.615,0.2;2.570,3.473,0.2;3.421,4.160,0.2;
4.271,3.036,0.2;3.411,1.876,0.2;2.561,2.562,0.2;2.179,2.420,0.2;
2.757,3.024,0.3;3.439,3.970,0.3;4.084,3.036,0.3;3.402,2.077,0.3;
2.879,3.036,0.4;3.421,3.793,0.4;3.953,3.036,0.4;3.402,2.219,0.4;
3.000,3.047,0.5;3.430,3.639,0.5;3.822,3.012,0.5;3.411,2.385,0.5;
3.103,3.012,0.6;3.430,3.462,0.6;3.710,3.036,0.6;3.402,2.562,0.6;
3.224,3.047,0.7;3.411,3.260,0.7;3.542,3.024,0.7;3.393,2.763,0.7];
x=A(:,1);y=A(:,2);z=A(:,3);
scatter(x,y,5,z)%散点图
figure
[X,Y,Z]=griddata(x,y,z,linspace(1.486,4.271)',linspace(1.604,4.276),'v4');%插值
pcolor(X,Y,Z);shading interp%伪彩色图
figure,contourf(X,Y,Z) %等高线图
figure,surf(X,Y,Z)%三维曲面

2015数学建模国赛b题代码分析
2015数学建模国赛b题代码分析
2015数学建模国赛b题代码分析
2015数学建模国赛b题代码分析

特定商圈 、 城郊地区全天空驶率变化折线图

(以 2015年 8月 30日全天东川路地铁站中心 10km范围为例)

data=xlsread('0830东川路.csv');   
[t0]=data(:,1); 
[K]=data(:,7); 
figure; 
plot(t0,K,'-rs','LineWidth',2,'MarkerEdgeColor','k','MarkerFaceColor','g','MarkerSize',10); 
% 's'表示正方形,线宽为2,MarkerEdgeColor标识符边缘颜色为黑色,MarkerFaceColor标识符填充颜色为绿色,MarkerSize标识符大小为10
axis([0 24 0 1]); % 坐标轴的显示范围
set(gca,'xtick',0:1:24); % X轴的记号点
xlabel('t/小时'); 
ylabel('K/空驶率'); 
title('2015年8月30日(工作日)东川路地铁站中心10km范围内空载率全天变化图'); 

2015数学建模国赛b题代码分析

边长7km方形区域内请求单数等高线和随机位置散点图

xmin=121.4; 
xmax=121.4824; 
ymin=31.2; 
ymax=31.263; %经纬度范围 
dx=(xmax-xmin)/9; 
dy=(ymax-ymin)/9; 
nx=linspace(xmin,xmax+dx,11); 
ny=linspace(ymin,ymax+dy,11); 
demand=xlsread('0910demand.csv'); 
De=[]; m=17; % 下午17时
for i=1:length(demand)     
    if (demand(i,1)==m)         
        [De]=[De; demand(i,:)]; 
    end
end
figure; 
[x1]=De(:,2);
[y1]=De(:,3);
[z1]=De(:,4); 
nxDis=linspace(min(x1),max(x1),80); 
nyDis=linspace(min(y1),max(y1),80); 
[xx1,yy1]=meshgrid(nxDis,nyDis); 
z2=griddata(x1,y1,z1,xx1,yy1,'v4'); % 插值
contour(xx1,yy1,z2,200,'s'); % 绘制矩阵的等高线,指定等高线的数量为200
axis([xmin xmax+dx ymin ymax+dy]); % 坐标范围
set(gca,'xtick',nx); 
set(gca,'ytick',ny); 
set(gca,'DataAspectRatio',[110.94 85.276 1]); % 将横纵坐标按照经纬度折 算公里数缩放 使得图中显示恰好为正方形 
grid on; % 加上网格线
rotateticklabel(gca,'x',-30); % X轴刻度标签比较拥挤时旋转30度
hold on;  
Dio=xlsread('meshin4.xls'); 
scatter(Dio(:,2),Dio(:,1),90,'+r'); % 散点图,点的大小为90
title('随机散点分布情况');

双坐标折线图

meanall=[]; 
for i=1:24 
    meanall=[meanall;[mean(dataall(i).taxi(:,3)),mean(dataall(i).passenger(:,3))]]; 
end 
h=1:24; 
set(gcf,'PaperType','A4', ... 
    'paperOrientation', 'portrait', ... 
    'paperunits','CENTIMETERS','PaperPosition',[.00, .00,16,10]); 
[hAx,hLine1,hLine2]=plotyy(h,meanall(:,1),h,meanall(:,2)); % 双坐标
ylabel(hAx(1),'出租车均值') 
ylabel(hAx(2),'乘客均值') 
set(hLine1,'LineStyle','--','Marker','*','MarkerSize',6,'LineWidth',1.5) 
set(hLine2,'LineStyle',':','Marker','o','MarkerSize',6,'LineWidth',1.5) 
xtlabel=num2cell(h);%cat(2,num2cell(h(1:4:end-2)),method); 
set(hAx,'XTick',h,'XTickLabel',xtlabel,'xlim',[1,24]) 
grid on 
xlabel('时间') 
leglabel={'出租车均值','乘客需求均值'}; 
legend(leglabel,'Location','Best') 
title('成都市 2015 年 9 月 9 日全天出租车分布和乘客需求均值图') 
figname=strcat('chengdu_mean','.jpg'); 
saveas(gcf, figname, 'jpg'); 

2015数学建模国赛b题代码分析

补充:
R=normrnd(μ,σ):生成服从正态分布(μ参数代表均值,σ参数代表标准差)的随机数。输入的向量或矩阵μ和σ必须形式相同,输出R也和它们形式相同。标量输入将被扩展成和其它输入具有相同维数的矩阵。

参考:
[1] https://www.cnblogs.com/aminxu/p/4643109.html (插值,这篇博客写得真的很不错!)
[2] https://blog.csdn.net/hhhhhyyyyy8/article/details/77862343 (介绍colormap)
[3] https://www.cnblogs.com/haore147/p/3633017.html (plot参数解析)
[4] https://blog.csdn.net/qq_35052417/article/details/76461643 (axis用法)

相关标签: 数学建模