查看: 3749|回复: 5|关注: 0

[已答复] MATLAB 排队论代码 问题

[复制链接]

新手

10 麦片

财富积分


050


2

主题

5

帖子

0

最佳答案
  • 关注者: 1
发表于 2014-5-23 22:24:56 | 显示全部楼层 |阅读模式
本帖最后由 ING1314 于 2014-5-23 22:26 编辑

网上找了个排队论的代码,为什么会出现这样的错误呢???Undefined function or variable 'number'.
Error in jianmofangzhen (line 24)
        number=sum(events(4,number)>events(1,i));
提示说变量number没有定义??请问怎么定义呢??谢谢!!

代码如下:

clear
clc
Total_time=10;
N=1000000;
lambda=10;
mu=6;
arr_mean=1/lambda;
ser_mean=1/mu;
arr_number=round(Total_time*lambda*2);
events=[];
events(1,:)=exprnd(arr_mean,1,arr_number);
evenrs(1,:)=cumsum(events(1,:));
events(2,:)=exprnd(ser_mean,1,arr_number);
len_sim=sum(events(1,:)<=Total_time);
events(3,1)=0;
events(4,1)=events(1,1)+events(2,1);
events(5,1)=1;
member=[1];
for i=2:arr_number
    if events(1,i)>Total_time
        break;
    else number=sum(events(4,number)>events(1,i));
        if number>=N+1
            events(5,i)=0;
        else if number==0
            events(3,i)=0;
            events(4,i)=events(1,i)+events(2,i);
            events(5,i)=1;
            member=[memeber,i];
            else len_mem=length(member);
                events(3,i)=events(4,member(len_mem))-events(1,i);
                events(4,i)=events(4,member(len_mem))+events(2,i);
                events(5,i)=number+1;
                member=[member,i];
            end
        end
    end
end
len_mem=length(member);
stairs([0 events(1,member)],0:len_mem);
hold on;
stairs([0 events(4,member)],0:len_mem,'.-r');
legend('到达时间','离开时间');
hold off
grid on;
figure;
plot(1:len_mem,events(3,member),'r-*',1:len_mem,events(2,member)+events(3,member),'k-');
legend('等待时间','停留时间');
grid on;



MATLAB 基础讨论
版块优秀回答者

入门

122 麦片

财富积分


50500


5

主题

255

帖子

27

最佳答案
  • 关注者: 1
发表于 2014-5-24 23:48:07 | 显示全部楼层
  1. number = 0
复制代码

新手

10 麦片

财富积分


050


2

主题

5

帖子

0

最佳答案
  • 关注者: 1
 楼主| 发表于 2014-5-25 06:40:19 | 显示全部楼层

请问是添加到什么位置呢?

MATLAB 基础讨论
版块优秀回答者

入门

122 麦片

财富积分


50500


5

主题

255

帖子

27

最佳答案
  • 关注者: 1
发表于 2014-5-26 14:05:05 | 显示全部楼层
ING1314 发表于 2014-5-25 06:40
请问是添加到什么位置呢?
  1. number=sum(events(4,number)>events(1,i))
复制代码
你的问题出在这里,等号右边的number没有初始化以及定义!
如果觉得答案满意,请选为最佳答案!

新手

7 麦片

财富积分


050


0

主题

1

帖子

0

最佳答案
发表于 2015-1-13 15:55:40 | 显示全部楼层
else number=sum(events(4,number)>events(1,i));
第二个"number"换成"member"      member=[memeber,i];
此处拼写错误了。然后就没问题了。楼主应该是打错了。

新手

5 麦片

财富积分


050


0

主题

1

帖子

0

最佳答案
发表于 2019-9-11 12:01:08 | 显示全部楼层
clear
clc
close all
Total_time=10;
N=1000000;
lambda=10;
mu=6;
arr_mean=1/lambda;
ser_mean=1/mu;
arr_number=round(Total_time*lambda*2);
events=[];
events(1,:)=exprnd(arr_mean,1,arr_number);
evenrs(1,:)=cumsum(events(1,:));
events(2,:)=exprnd(ser_mean,1,arr_number);
len_sim=sum(events(1,:)<=Total_time);
events(3,1)=0;
events(4,1)=events(1,1)+events(2,1);
events(5,1)=1;
member=[1];
for i=2:arr_number
    if events(1,i)>Total_time
        break;
    else
        number=sum(events(4,member)>events(1,i));
        if number>=N+1
            events(5,i)=0;
        else if number==0
            events(3,i)=0;
            events(4,i)=events(1,i)+events(2,i);
            events(5,i)=1;
            member=[member,i];
            else len_mem=length(member);
                events(3,i)=events(4,member(len_mem))-events(1,i);
                events(4,i)=events(4,member(len_mem))+events(2,i);
                events(5,i)=number+1;
                member=[member,i];
            end
        end
    end
end
len_mem=length(member);
stairs([0 events(1,member)],0:len_mem);
hold on;
stairs([0 events(4,member)],0:len_mem,'.-r');
legend('到达时间','离开时间');
hold off
figure;
plot(1:len_mem,events(3,member),'r-*',1:len_mem,events(2,member)+events(3,member),'k-');
legend('等待时间','停留时间');
grid on;
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /4 下一条

快速回复 返回顶部 返回列表