1-1
tic
frequency=[1:181]';
usetime=[];% 用车时长
for i=1:20
excelname=strcat('inExcel\第',num2str(i),'天.xls')
%% 读取数据
[~,data]=xlsread(excelname);
data=data(:,[5,6,9,10,12]); % 借车车站号,锁桩号,还车车站号,用车时长
data(1,:)=[]; %去掉第一行文字
%% 数据类型的转换为数值型
% isa(data{1,1},'char') 判断数据类型
data_tep = str2double(data); %36402
% isnan()返回矩阵 [m,n]=find(isnan()) 返回下标
%% 查找nan数据
[m,n] = find(isnan(data_tep));
data_tep(m,:)=[];
%% 去掉借车时间为0与大于1440
data_tep([data_tep(:,5) == 0],:)=[]; %34252
data_tep([data_tep(:,5) > 1440],:)=[]; %
%% 站点编号1-107,109-181
data_tep=data_tep([data_tep(:,1) >= 1 & data_tep(:,1)<=181],:);
data_tep([data_tep(:,1)==108],:)=[]; %108用于调试
%% 删除0号锁桩记录
data_tep([data_tep(:,2)==0],:)=[]; %借车锁桩号为0
data_tep([data_tep(:,4)==108],:)=[]; % 还
%% 统计品频次,利用函数tabulate
freq_bro = tabulate(data_tep(:,1)); %统计借车站号频次
freq_ret = tabulate(data_tep(:,3)); %统计还车站号频次
frequency = [frequency,freq_bro(:,2),freq_ret(:,2)];
%% 每天的用车时长数据
usetime=[usetime;data_tep(:,5)];
end
frequency(108,:)=[];
%save frequency.mat
save('outResult\frequency','frequency')
save('outResult\usetime','usetime')
xlswrite('outExcel\pproblem1_1.xlsx',frequency)
toc
%% 可视化
state = [1 50 100 150];
for i=1:4
subplot(2,2,i)
plot(frequency(state(i),[2:2:41]),'r-o') %h绘制站点1的借车频次折线图
hold on
plot(frequency(state(i),[3:2:41]),'b-*') %还车
grid on
xlabel('天数/天')
ylabel('频次')
title(strcat('站点',num2str(i),'在20天内接换车频次'))
legend('借车','频次','Location','best')
legend('boxoff')
end
1-2
%% 统计每一天的累计借还车频次
% load frequency.mat
load('outResult\frequency')
%% 提取出每一天单独借还车频次
borrow_freq = frequency(:,2:2:41); %借车频次
return_freq = frequency(:,3:2:41); %还车频次
%% 累加
%cumsum 累加
borrow_cs = cumsum(borrow_freq,2); % 借车按行累加频次
return_cs = cumsum(return_freq,2); % 借车按行累加频次
%% 将结果组合到一个矩阵中去
borw_retn(:,1) = [1:107,109:181]';
for i = 1:20
borw_retn(:,2*i) = borrow_cs(:,i);
borw_retn(:,2*i+1) = return_cs(:,i);
end
% save borw_retn.mat
save('outResult\borw_retn','borw_retn')
xlswrite('outExcel\pproblem1_2.xlsx',borw_retn)
%% 排序
borfirst5 = borw_retn(:,[1,40]);
borfirst5 = sortrows(borfirst5,-2); %按累计频次(第二列)降序排列,默认为升序
retfirst5 = borw_retn(:,[1,41]);
retfirst5 = sortrows(retfirst5,-2); %按累计频次(第二列)降序排列,默认为升序
1-3
load('outResult\usetime')
%% 每次用车时长数字特征
% 均值,中位数,标准差,众数,偏度,峰度
% mean median std mode skewness kurtosis
time_stat=[mean(usetime),median(usetime),std(usetime),mode(usetime),...
skewness(usetime),kurtosis(usetime)];
%% 绘制图像
% 带有正态分布密度曲线的直方图
subplot(2,1,1)
histfit(usetime)
subplot(2,1,2)
time = usetime(usetime>=1 & usetime <=60);
histfit(time)
axis([-20,60,0,35000])
title('每次用车时长分布(1-60min内)')
%% 拟合曲线,1-60min为横轴,百分比为纵轴
figure(2)
Y=tabulate(time);
fh = @(beta,x)beta(1)*exp(-beta(2)*x)-beta(3)*exp(-beta(4)*x);
beta = nlinfit(Y(:,1),Y(:,3),fh,[50,0.1,50,0.1]); % 非线性拟合
fhy = @(x)fh(beta,x); % beta已经具体化数值
y=fhy(Y(:,1));% 拟合值
plot(Y(:,3),'bo')
hold on
plot(Y(:,1),y,'r-')
grid on
xlabel('时间(min)')
ylabel('借车时刻频率')
title('每次用车时长的概率密度曲线拟合')
legend('用车时长频率','拟合概率密度曲线','Location','best')
legend('boxoff')
2-1
card_num = zeros(2,20); % 每天的借卡人数量
card_num(1,:) = 1:20;
SN_all = []; % 所有20天的借车卡SN
for i=1:20
excelname=strcat('inExcel\第',num2str(i),'天.xls')
%% 读取数据
[~,data]=xlsread(excelname);
data=data(:,[5,6,9,10,12,15]); % 借车卡SN
data(1,:)=[]; %去掉第一行文字
%% 数据类型的转换为数值型
% isa(data{1,1},'char') 判断数据类型
data_tep = str2double(data);
% isnan()返回矩阵 [m,n]=find(isnan()) 返回下标
%% 查找nan数据
[m,n] = find(isnan(data_tep));
data_tep(m,:)=[];
%% 去掉借车时间为0与大于1440
data_tep([data_tep(:,5) == 0],:)=[]; %34252
data_tep([data_tep(:,5) > 1440],:)=[]; %
%% 站点编号1-107,109-181
data_tep=data_tep([data_tep(:,1) >= 1 & data_tep(:,1)<=181],:);
data_tep([data_tep(:,1)==108],:)=[]; %108用于调试
%% 删除0号锁桩记录
data_tep([data_tep(:,2)==0],:)=[]; %借车锁桩号为0
data_tep([data_tep(:,4)==108],:)=[]; % 还
SN_all = [SN_all;data_tep(:,end)]; %组合20天的借车卡
card_num(2,i) = length(unique(data_tep(:,end)));
end
save('outResult\SN_all','SN_all')
save('outResult\card_num','card_num')
%% 画图
figure
plot(card_num(1,:),card_num(2,:),'b-o')
grid on
xlabel('天数')
ylabel('不同借车卡号数量')
title('不同借车卡号数量折线图')
axis([1,20,2000,21000])
%% 按照每周来统计不同借车卡百分比
for i=1:7
week(i) = mean(card_num(2,i:7:20));
end
week = [week(5:7),week(1:4)];
week = week/sum(week);
figure
plot(week,'b--.','LineWidth',1,'MarkerSize',15)
grid on
ylabel('不同借车卡数量在每周所占的比例')
title('不同借车卡在每周中占的比例')
xname={'星期一','星期二','星期三','星期四','星期五','星期六','星期天'};
set(gca,'XTick',1:7,'xticklabel',xname);
for i=1:7 % 折线图上增加刻度
text(i,week(i),strcat(num2str(roundn(week(i)*100,-2))));
end
%% a
% excelname=strcat('inExcel\第',num2str(1),'天.xls')
% [~,data]=xlsread(excelname);
% data=data(:,end);
% data(1,:)=[];
% data_tep = str2double(data);
% % unique 去除重复值
% du=unique(data_tep);
% length(du)
2-2
load('outResult\SN_all')
Y = tabulate(SN_all);
Y = Y(Y(:,2)>0,:); % 不同卡号累计借车次数
SN_stat=[mean(Y(:,2)),median(Y(:,2)),std(Y(:,2)),mode(Y(:,2)),...
skewness(Y(:,2)),kurtosis(Y(:,2))];
subplot(2,1,1)
histfit(Y(:,2))
Y2=Y(:,2);
title('每张借车卡累计借车分布')
subplot(2,1,2)
Y2 = Y2(Y2>=1 & Y2 <=40);
histfit(Y2)
axis([-20,40,0,3500])
title('每张借车卡累计借车次数分布(1-40次内)')
figure
yt=tabulate(Y2); % 累计借车次数在1-40的频次
fh = @(beta,x)beta(1)*exp(-beta(2)*x);
beta = nlinfit(yt(:,1),yt(:,3),fh,[1,-0.1]); % 非线性拟合
fhy = @(x)fh(beta,x); % beta已经具体化数值
y=fhy(yt(:,1));% 拟合值
plot(yt(:,3),'bo')
hold on
plot(yt(:,1),y,'r-')
grid on
xlabel('次数')
ylabel('借车次数频率')
title('每张借车卡累计借车次数的概率密度曲线拟合')
legend('SN频率','拟合概率密度曲线','Location','best')
legend('boxoff')
axis([0,40,0,9])
3-1
bor_num = zeros(2,20); % 统计每天总借车次数
bor_num(1,:) = 1:20;
dist_data = []; % 选取并合并距离数据
for i=1:20
excelname=strcat('inExcel\第',num2str(i),'天.xls')
%% 读取数据
[~,data]=xlsread(excelname);
data=data(:,[5,6,9,10,12]); % 借车车站号,锁桩号,还车车站号,用车时长
data(1,:)=[]; %去掉第一行文字
%% 数据类型的转换为数值型
% isa(data{1,1},'char') 判断数据类型
data_tep = str2double(data); %36402
% isnan()返回矩阵 [m,n]=find(isnan()) 返回下标
%% 查找nan数据
[m,n] = find(isnan(data_tep));
data_tep(m,:)=[];
%% 去掉借车时间为0与大于1440
data_tep([data_tep(:,5) == 0],:)=[]; %34252
data_tep([data_tep(:,5) > 1440],:)=[]; %
%% 站点编号1-107,109-181
data_tep=data_tep([data_tep(:,1) >= 1 & data_tep(:,1)<=181],:);
data_tep([data_tep(:,1)==108],:)=[]; %108用于调试
%% 删除0号锁桩记录
data_tep([data_tep(:,2)==0],:)=[]; %借车锁桩号为0
data_tep([data_tep(:,4)==108],:)=[]; % 还
bor_num(2,i) = length(data_tep); %每天总的借车次数
dist_data = [dist_data;data_tep(:,[1,3,5])]; %合并所有天数的距离数据,借车,还车,时间
save('outResult\dist_data','dist_data')
end
%% 画图
plot(bor_num(1,:),bor_num(2,:),'b-o')
grid on
xlabel('天数')
ylabel('每天总借车次数')
title('每天总的借车次数折线图')
3-2
load('outResult\dist_data')
%% 计算各站点之间最短距离(所有天数)
dsb = sortrows(dist_data,1); % 借车排序,第一列从小到大
dsr = sortrows(dist_data,2); % 还车排序,第二列从小到大
min_dist = 9999*ones(181); % 距离小于999就更新
n = length(dist_data);
%% 正
for i=1:n
bi = dsb(i,1); % 借车站点号
ri = dsb(i,2); %还车站点号
minitime = dsb(i,3); % 距离(时间)
if min_dist(bi,ri) > minitime
min_dist(bi,ri) = minitime;
end
end
%% 反
for i=1:n
bi = dsr(i,1); % 借车站点号
ri = dsr(i,2); %还车站点号
minitime = dsr(i,3); % 距离(时间)
if min_dist(ri,bi) > minitime
min_dist(ri,bi) = minitime;
end
end
min_dist(:,108) = [];
min_dist(108,:) = [];
dist_min = triu(min_dist) - eye(180);
xlswrite('outExcel\problem_distmin_3_1.xlsx',dist_min)
save('outResult\dsb','dsb') %保存指定变量
%% 计算各站点之间最长距离(所有天数
long_dist = 9999*ones(181);
for i = [1:107,109:181]
fprintf('----->【%d】站点\n',i)
for j = [1:107,109:181]
value = 9999;
longs1 = dsb(dsb(:,1) == i & dsb(:,2) == j,:); %D1--->D2
longs2 = dsb(dsb(:,1) == j & dsb(:,2) == i,:); %D2--->D1
if ~isempty(longs1) %表示D1--->D2有借车
if ~isempty(longs2) %表示D2--->D1有借车
value = mean([median(longs1(:,3)),median(longs2(:,3))]);
else %表示D2--->D1无借车
value = median(longs1(:,3));
end
elseif ~isempty(longs2)
value = median(longs2(:,3));
end
long_dist(i,j) = value;
end
end
long_dist(:,108) = [];
long_dist(108,:) = [];
dist_max = triu(long_dist);
dist_max = dist_max - diag(diag(dist_max));
xlswrite('outExcel\problem_distmax_3_1.xlsx',dist_max)
3-3
% (2)选择借车频次最高和还车频次最高的站点
load('outResult\dsb')
brsame_stat = zeros(3,181); %各个站点借车次数和每次平均用车时长
brsame_stat(1,:) = 1:181;
for i = [1:107,109:181]
brsame = dsb(dsb(:,1) == i & dsb(:,2) == i,:); %借还车相等站点
brsame(brsame(:,3) < 1) = []; %删除用车时长小于1min的数据
brsame_stat(2,i) = length(brsame); %借车次数
brsame_stat(3,i) = mean(brsame(:,3)); %借车次数
end
brsame_stat(:,108) = [];
subplot(2,1,1)
plot(brsame_stat(2,:),'b-')
title('每天各个站点借车次数')
subplot(2,1,2)
plot(brsame_stat(3,:),'b-')
title('每天各个站点每次平均用车时长')
brsame_num_stat = [mean(brsame_stat(2,:)),median(brsame_stat(2,:)),std(brsame_stat(2,:)),mode(brsame_stat(2,:)),...
skewness(brsame_stat(2,:)),kurtosis(brsame_stat(2,:))];
brsame_time_stat = [mean(brsame_stat(3,:)),median(brsame_stat(3,:)),std(brsame_stat(3,:)),mode(brsame_stat(3,:)),...
skewness(brsame_stat(3,:)),kurtosis(brsame_stat(3,:))];
figure
subplot(2,1,1)
histfit(brsame_stat(2,:))
title('每天各个站点借车次数')
subplot(2,1,2)
histfit(brsame_stat(3,:))
title('每天各个站点每次平均用车时长')
[h1,p1,stat1,cv1] = jbtest(brsame_stat(2,:));
[h2,p2,stat2,cv2] = jbtest(brsame_stat(3,:));
figure
subplot(2,1,1)
brost = tabulate(dsb(:,1)); %借车
brost(108,:) = [];
plot(brost(:,2),'r-o')
title('各个站点累计借车次数')
subplot(2,1,2)
retst = tabulate(dsb(:,2)); %还车
retst(108,:) = [];
plot(retst(:,2),'r-o')
title('各个站点累计还车次数')
[bval,bind] = max(brost(:,2));
[rval,rind] = max(retst(:,2));
fprintf('所有20天内借车次数最大的站点为【%d】,借车次数【%d】次。\n',bind,bval)
fprintf('所有20天内还车次数最大的站点为【%d】,还车次数【%d】次。\n',rind,rval)
3-4
%(2)选择借车频次最高(42)和还车频次最高的站点(56),分别统计分析其借、还车时刻的分布及用车时长的分布。
DATA42 = [];
DATA56 = [];
data_all = [];
for i = 1:20
%% 读取与选取数据
excelname = strcat('InExcel\第',num2str(i),'天.xls') %strcat字符串的拼接
[~,data] = xlsread(excelname); %读取excel数据
data = data(:,[5:7,9:12]); %借车车站号、锁桩号、还车车站号,用车时长,借还用车时刻
data(1,:) = []; %删除表头标题
datatime = data(:,[3,6]); %借还用车时刻
data(:,[3,6]) = [];
%% 处理时间数据
dt = zeros(length(datatime),2);
for j = 1:length(datatime) %借车
if ~isempty(datatime{j,1})
str1 = strsplit(datatime{j,1}); %拆分:日期 + 时间
if length(str1) ~= 1
str2 = strsplit(str1{2},':'); %拆分时间:hh + mm + ss
if eval(str2{3}) > 30 %大于30秒的,分钟 + 1
mm = eval(str2{2}) + 1; %分钟为60,小时+1
if mm == 60
dt(j,1) = eval(strcat(num2str(eval(str2{1})+1),'00')); %eval转换数值字符串到数值
else
dt(j,1) = eval(strcat(str2{1},str2{2}))+1; %eval转换数值字符串到数值
end
else
dt(j,1) = eval(strcat(str2{1},str2{2}));
end
else
dt(j,1) = 0;
end
else
dt(j,1) = 0;
end
end
for j = 1:length(datatime) %还车
if ~isempty(datatime{j,2})
str1 = strsplit(datatime{j,2}); %拆分:日期 + 时间
if length(str1) ~= 1
str2 = strsplit(str1{2},':'); %拆分时间:hh + mm + ss
if eval(str2{3}) > 30 %大于30秒的,分钟 + 1
mm = eval(str2{2}) + 1; %分钟为60,小时+1
if mm == 60
dt(j,2) = eval(strcat(num2str(eval(str2{1})+1),'00')); %eval转换数值字符串到数值
else
dt(j,2) = eval(strcat(str2{1},str2{2}))+1;
end
else
dt(j,2) = eval(strcat(str2{1},str2{2}));
end
else
dt(j,2) = 0;
end
else
dt(j,2) = 0;
end
end
data_tmp = str2double(data); %数据类型的转换,36402
data_tmp = [data_tmp,dt];
%% 根据假设条件处理数据
[m,n] = find(isnan(data_tmp)); %查找nan数据
data_tmp(m,:) = [];
data_tmp([data_tmp(:,5) == 0],:) = []; %删除用车时长为0,34252
data_tmp([data_tmp(:,5) > 1440],:) = []; %删除用车时长超过1440min
%保留站点编号为[1:107,109:181]的数据
data_tmp = data_tmp([data_tmp(:,1) >= 1 & data_tmp(:,1) <= 181],:);
data_tmp([data_tmp(:,1) == 108],:) = []; %108号属于调试站号
%删除0号锁桩记录
data_tmp([data_tmp(:,2) == 0],:) = []; %借车锁桩号为0的删除
data_tmp([data_tmp(:,4) == 0],:) = []; %还车锁桩号为0的删除
%% 选取42站点和56站点数据
data42 = data_tmp(data_tmp(:,1) == 42,:);
data42(data42(:,6) == 0,:) = []; %借车时刻
data42(data42(:,7) == 0,:) = []; %还车时刻
DATA42 = [DATA42;data42];
data56 = data_tmp(data_tmp(:,3) == 56,:);
data56(data56(:,6) == 0,:) = [];
data56(data56(:,7) == 0,:) = [];
DATA56 = [DATA56;data56];
data_all = [data_all;data_tmp]; %满足所有条件的数据合并
end
save('outResult\data_all','data_all') %保存指定变量
k = 1;
bfreq = zeros(1,16);
rfreq = zeros(1,16);
for t = 600:100:2100
bfreq(k) = length(DATA42(DATA42(:,6) >= t & DATA42(:,6) < t+100,6));
rfreq(k) = length(DATA42(DATA42(:,7) >= t & DATA42(:,7) < t+100,7));
k = k + 1;
end
bfreq = bfreq/sum(bfreq)*100;
rfreq = rfreq/sum(rfreq)*100;
plot(6:21,bfreq,'r-o')
hold on; grid on
plot(6:21,rfreq,'b-*')
title('最大借车次数站点42的时段分布')
legend('借车','还车','Location','best')
legend('boxoff')
xlabel('时段(h)'); ylabel('频率(%)')
figure
k = 1;
bfreq = zeros(1,16);
rfreq = zeros(1,16);
for t = 600:100:2100
bfreq(k) = length(DATA56(DATA56(:,6) >= t & DATA56(:,6) < t+100,6));
rfreq(k) = length(DATA56(DATA56(:,7) >= t & DATA56(:,7) < t+100,7));
k = k + 1;
end
bfreq = bfreq/sum(bfreq)*100;
rfreq = rfreq/sum(rfreq)*100;
plot(6:21,bfreq,'r-o')
hold on; grid on
plot(6:21,rfreq,'b-*')
title('最大借车次数站点56的时段分布')
legend('借车','还车','Location','best')
legend('boxoff')
xlabel('时段(h)'); ylabel('频率(%)')
3-5
subplot(2,1,1)
D42 = DATA42(DATA42(:,5) <= 60,:);
Yt = tabulate(D42(:,5));
stem(Yt(:,1),Yt(:,3),'-.','filled','MarkerSize',5)
title('最大借车次数站点42的用车时长分布')
subplot(2,1,2)
D56 = DATA56(DATA56(:,5) <= 60,:);
Yt = tabulate(D56(:,5));
stem(Yt(:,1),Yt(:,3),'r-.','filled','MarkerSize',5)
title('最大还车次数站点56的用车时长分布')
3-6
%(3)找出各站点的借车高峰时段和还车高峰时段
load('outResult\data_all')
data_all(data_all(:,6) < 600,6) = 600; % 6点之前的数据修改为6点
data_all(data_all(:,6) > 2100,6) = 2059; % 21点之后的数据修改为20:59
data_all(data_all(:,7) < 600,7) = 600; % 6点之前的数据修改为6点
data_all(data_all(:,7) > 2100,7) = 2059; % 21点之后的数据修改为20:59
for t = 600:100:2000
data_all(data_all(:,6) >= t & data_all(:,6) < t+100,6) = t/100;
data_all(data_all(:,7) >= t & data_all(:,7) < t+100,7) = t/100;
end
peak = zeros(181,9);
peak(:,1) = [1:181]';
for i = [1:107,109:181]
%% 借车
dsub = data_all(data_all(:,1) == i,:);
dsubm = dsub(dsub(:,6) <= 12,:); %早高峰
dsube = dsub(dsub(:,6) > 12,:); %晚高峰
Ytm = tabulate(dsubm(:,6)); %早高峰
[mval,mind] = max(Ytm(:,2));%早高峰: find(x == max(x))
Yte = tabulate(dsube(:,6)); %晚高峰
[eval,eind] = max(Yte(:,2)); %晚高峰
peak(i,2) = mind;
peak(i,3) = ceil(mval/20);
peak(i,4) = eind;
peak(i,5) = ceil(eval/20);
%% 还车
dsub = data_all(data_all(:,3) == i,:);
dsubm = dsub(dsub(:,6) <= 12,:); %早高峰
dsube = dsub(dsub(:,6) > 12,:); %晚高峰
Ytm = tabulate(dsubm(:,6)); %早高峰
[mval,mind] = max(Ytm(:,2));%早高峰
Yte = tabulate(dsube(:,6)); %晚高峰
[eval,eind] = max(Yte(:,2)); %晚高峰
peak(i,6) = mind;
peak(i,7) = ceil(mval/20);
peak(i,8) = eind;
peak(i,9) = ceil(eval/20);
end
peak(108,:) = [];
save('outResult\peak','peak') %保存指定变量
peak_time = peak(:,[2:2:9]);
%% 借车时段系统聚类
d = pdist(peak_time(:,1:2)); %欧式距离
z= linkage(d,'ward'); %离差平方和
dendrogram(z,'ColorThreshold', 0.4*max(z(:,3)),'Orientation','left'); %谱系聚类图
T = cluster(z,5); %输出5类聚类结果
clus = zeros(180,2);
clus(:,1) = [1:107,109:181]';
clus(:,2) = T;
clus = sortrows(clus,2);
4
% 4.请说明上述统计结果携带了哪些有用的信息,由此对目前公共自行车服务系统站点设置和锁桩数量的配置做出评价。
load('outResult\data_all')
stock = zeros(180,91);
stock(:,1) = [1:107,109:181]';
for i = [1:107,109:181]
bstate = data_all(data_all(:,1) == i,2); %借车
bval = max(bstate);
rstate = data_all(data_all(:,3) == i,4); %还车
rval = max(rstate);
stock(i,2) = ceil(max(bval/2,rval/2)); % c0
end
%% 迭代公式,数值分析 ct = c(t-1) + bt - at;
for i = [1:107,109:181]
i
k = 3;
% 6:00、6:10、6:20、.....20:50、21:00
for t = 600:100:2000 %整时刻
for ti = t:10:t+50
bdt = data_all(data_all(:,1) == i & data_all(:,6) >= ti & data_all(:,6) < ti+10,6);
at = ceil(length(bdt)/20); %t时刻到t+10时刻的借车数量
rdt = data_all(data_all(:,3) == i & data_all(:,7) >= ti & data_all(:,7) < ti+10,7);
bt = ceil(length(rdt)/20); %t时刻到t+10时刻的还车数量
stock(i,k) = stock(i,k-1) + bt - at;
k = k + 1;
end
end
end
%% 可视化
subplot(2,2,1)
plot(stock(1,2:end),'r-')
title('站点1:各时刻(10min)自行车存量变化曲线')
subplot(2,2,2)
plot(stock(11,2:end),'r-')
title('站点11:各时刻(10min)自行车存量变化曲线')
subplot(2,2,3)
plot(stock(9,2:end),'r-')
refline(0,0)
title('站点9:各时刻(10min)自行车存量变化曲线')
subplot(2,2,4)
plot(stock(12,2:end),'r-')
title('站点12:各时刻(10min)自行车存量变化曲线')
refline(0,0)