MATLAB读写excel中指定sheet行列中的数据
2017-09-27 14:41
591 查看
%% 参考陆传X《排队论》第二版[M].北京邮电大学出版社,2009,p72-76 %%=================初始化并赋初值================ clc;clear all numda=xlsread('data1.xlsx','sheet1','b2:b12'); mu=xlsread('data1.xlsx','sheet1','c2:c12'); n=xlsread('data1.xlsx','sheet1','d2:d12'); m=xlsread('data1.xlsx','sheet1','e2:e12'); %Lqq=AA('sheet1','f2:f12')'; %Wqq=AA('sheet1','g2:g12')'; %numda=2.5392; %numda表示排队模型M/M/n/m中,产品到达速率 %mu=0.94; %mu表示工站中某一台设备的加工速率 %n=3; %n表示某个工站中并联加工设备的数量 %m=15; %m表示缓冲区大小(和ARENA中“NQ(xxx.Queue)<N”的关系为N=m-n,或者:m=N+n) ro=numda./(n.*mu); %ro表示工站负荷水平或强度(ro=ro1/n)。 %============计算ro=========== if ro~=1 sum = 0; for k = 0:n-1 % 循环变量根据需要改吧 sum = sum+((n.*ro).^k)/(factorial(k)); end P0=(sum+((n.*ro).^n).*(1-(ro.^(m-n+1)))./(factorial(n).*(1-ro))).^(-1); %计算p0表示饥饿概率 Pm=((n.^n).*(ro.^m).*P0)./factorial(n); %pm表示缓冲区为m时的阻塞概率 wq=((((n.^n).*(ro.^(n+1)).*P0)./( factorial(n).*((1-ro).^2).*numda.*(1-Pm))).*(1-(m-n+1).*(ro.^(m-n))+(m-n).*(ro.^(m-n+1)))); %平均排队等待时间 p_loss=Pm; %(1)系统损失率,与上面的pm相同。 Q= 1-Pm; %(2)系统相对通过能力 numda1=numda.*Pm; %(3)单位时间平均损失的产品数量 numdae=numda.*(1-Pm); % (3)平均进入系统的产品数量 n_busy=numdae./mu; %(4)平均忙着的设备数量 Lq=((n.^n).*(ro.^(n+1)).*P0.*(1-(m-n+1).*(ro.^(m-n))+(m-n).*(ro.^(m-n+1))))./(factorial(n).*((1-ro).^2)); %(5)平均排队等待数量(排队等待队长) Ls=Lq+(numdae./mu); %(6)平均队长(即平均产品数量) Wq=Lq./numdae; %(7)平均排队等待时间 Ws=Wq+(1./mu); %(7)产品在系统内平均逗留时间 %===========================显示结果================================ %disp(['P0(饥饿概率/系统空闲率)=' num2str(P0)]); % disp(['Q(系统相对通过能力)=' num2str(Q)]); % disp(['numda1(单位时间平均损失的产品数量)=' num2str(numda1)]); % disp(['numdae(平均进入系统的产品数量)=' num2str(numdae)]); % disp(['Pm(缓冲区为m时的阻塞概率)=' num2str(Pm)]); % disp(['n_busy(平均忙着的设备数量)=' num2str(n_busy')]); % disp(['Ls(平均队长)=' num2str(Ls')]); % disp(['Lq(平均等待队长)=' num2str(Lq')]); % disp(['Ws(平均逗留时间)=' num2str(Ws')]); else sum = 0; for k = 0:n-1 % 循环变量根据需要改吧 sum = sum + (n^k)/(factorial(k)); end P0=(sum+(n^n)*(m-n+1))/(factorial(n))^(-1) %p0表示排队模型M/M/n/m中,饥饿率 end %Lqerror=abs((Lqq-Lq))./Lqq; %Wqerror=abs((Wqq-Wq))./Wqq; %disp(['Lq(平均排队等待数量)=' num2str(Lq)]) % disp(['Lqerror(平均排队等待数量误差)=' num2str(Lqerror)]) % disp(['Wq(平均排队等待时间)=' num2str(Wq)]) %disp(['Wqerror(平均排队等待时间误差)=' num2str(Wqerror)]) xlswrite('data1.xlsx',Wq,'Sheet1','f2:f12'); xlswrite('data1.xlsx',Lq,'Sheet1','g2:g12'); xlswrite('data1.xlsx',ro,'Sheet1','h2:h12'); xlswrite('data1.xlsx',n_busy,'Sheet1','i2:i12'); WWq=xlsread('data1.xlsx','sheet1','j2:j12'); %读取excel表中arena仿真得到的数据,区别与matlab计算获得的Wq. LLq=xlsread('data1.xlsx','sheet1','k2:k12'); rro=xlsread('data1.xlsx','sheet1','l2:l12'); nn_busy=xlsread('data1.xlsx','sheet1','m2:m12'); error_Wq=abs(100*(WWq-Wq))./WWq; error_Lq=abs(100*(LLq-Lq))./LLq; error_ro=abs(100*(rro-ro))./rro; error_n_busy=abs(100*(nn_busy-n_busy))./nn_busy; %将误差数据写入excel表中,以方便word直接复制。 xlswrite('data1.xlsx',error_Wq,'Sheet1','n2:n12'); xlswrite('data1.xlsx',error_Lq,'Sheet1','o2:o12'); xlswrite('data1.xlsx',error_ro,'Sheet1','p2:p12'); xlswrite('data1.xlsx',error_n_busy,'Sheet1','q2:q12');
相关文章推荐
- C#向excel的指令表单sheet指定行列中写入数据
- Java读取excel指定sheet中的各行数据,存入二维数组,包括首行,并打印
- Winform多个datagaridview数据源向指定Excel多个sheet中插入数据
- MATLAB读写Excel数据
- Java 读取excel指定行列数据以及将数据保存到txt文件中
- MatLab建模学习笔记4——MatLab向Excel中读写数据
- matlab 读写其他格式数据文件(excel)
- MATLAB读写Excel文件中的数据
- Excel中指定的sheet名称或索引读取数据到DataTable
- 从Excel中指定的sheet名称或索引读取数据到DataTable,以便用户更改sheet名称后仍能读取数据
- MATLAB如何读写Excel数据文件
- 运用matlab对excel表格数据的读写方法
- MATLAB学习(四)Excel读写数据
- MATLAB 读写excel数据
- MatLab建模学习笔记4——MatLab向Excel中读写数据
- matlab对excel数据进行排序求和
- VC++读写打开Excel文档数据
- C# 读取Excel中指定的Sheet名称或索引
- 将excel中的数据导入到matlab中
- 将Matlab中的数据输出到指定的txt文本文件中