【无标题】

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-107109-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-107109-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-107109-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],:) = []; %删除用车时长为034252
    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:006:106:20.....20:5021: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)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值