BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / math-model / #5027同步于 2009/10/31
该镜像源已超过 30 天没有更新,可能在源站已被删除。
MathModel机器人发帖

Error: Function definitions are not permitted at the prompt

ldhscxl
2009/10/31镜像同步6 回复
我在Matlab下写了一个程序,但是老是提示出现错误, ??? function calcu=mainvv | Error: Function definitions are not permitted at the prompt or in scripts. 程序如下: 游戏业务模型中几个主要模块程序清单: 1.主程序 function calcu=mainvv clear; global T buffersize alluser buffer sum user n speedaveg rate delayaveg delay interval sizeall loss array numberall readsize ; global fspeed fdrop delayl dropratio; numberall=0;%数据包总数量 loss=0;%丢包数 sizeall=0;%目前缓存中数据大小 sum=0; alluser=n; %用户数 for i=1:alluser array(i)=0; end %array记录每用户缓存中数据包数量 %储存时间间隔和数据包大小的结构体 buffer = struct('size',0,'time',0); user = struct('size',0,'time',0); interval=5;%读取缓存时间间隔 buffersize=200000;%缓存大小 readsize=25000;%读取速率5Mbps,则5ms可读比特数可算 speedaveg=[0];rate=1;%平均速率 avedelay=[0];delay=1;%平均时延 treading=[0]; for number=1:alluser%初始化 user(number).size=0; user(number).time=unifrnd(0,40); end for T=0:0.1:1600 for number=1:alluser write(number); end read; end loss; dropratio=loss/numberall; delayl=mean(delayaveg); delayaveg; j=1;M=[0];L=[0]; len1=length(speedaveg); %fspeed=speedaveg(len1);用户数为n时总的吞吐量; for j=1:1:len1-1 M(j)=interval*j; L(j)=speedaveg(j); end if n==50 plot(M,L,'>'),hold on; elseif n==80 plot(M,L,'+'),hold on; else plot(M,L) end;%画不同用户数吞吐量随时间变化图 x=[0]; for i=120:1:len1-1 x(i-119)=speedaveg(i); end; [f,xi]=ksdensity(x); plot(xi,f);hold on;%选定丢包率较小时的用户数,画吞吐量趋于稳定后速率PDF 2.数据包写入缓存模块 function write(number) global T timeinter buffer buffersize user sizeall loss numberall array ; %%%%%%%%%到达时间间隔随机数%%%%%%%%% if T==0||user(number).time<T timeinter(number)=timerand; user(number).time=user(number).time+timeinter(number); end %----------数据包大小随机数------- if user(number).time-T<0.1&&user(number).time-T>0 user(number).size=sizerand; array(number)=array(number)+1;%第number个用户的缓存中数据包数加一 buffer(number,array(number)).size=user(number).size; buffer(number,array(number)).time=user(number).time; numberall=numberall+1; sizeall=sizeall+user(number).size; if sizeall>buffersize sizeall=sizeall-buffer(number,array(number)).size;%缓存溢出则丢包处理 array(number)=array(number)-1;%第number个用户的该数据包丢掉 loss=loss+1;计算丢包数 return; end End 3.读取缓存模块 function read global speedaveg rate delayaveg delay buffer T sum interval sizeall array readsize alluser; %%%%%%%%读取缓存%%%%%%%%%%%%%% if mod(T,interval)==0&&T>0 sumson=0; usercount=1;%结构体中第row个用户 while usercount<=alluser&&sumson<=readsize%控制每次读取比特小于readsize if array(usercount)>=1%此用户缓存中有数据包时 sum=sum+buffer(usercount,array(usercount)).size; sumson=sumson+buffer(usercount,array(usercount)).size; delayaveg(delay)=T-buffer(usercount,array(usercount)).time; delay=delay+1; array(usercount)=array(usercount)-1; else usercount=usercount+1;%否则读取下一用户缓存 end speedaveg(rate)=sum/T; rate=rate+1; sizeall=sizeall-sum;%去掉已读取的包 End 4.统计模块之一:时延CDF global delayaveg n; ehdelay=[0];M=[0]; n=1; for i=1:1:3 mainvv; M(i)=n; n=n+8; y=[0]; y=delayaveg; ymin=min(y); ymax=max(y); x=linspace(ymin,ymax,30); yy=hist(y,x); yy=yy/length(y)/(x(2)-x(1)); s=0; for i=2:length(x) s=[s,trapz(x([1:i]),yy([1:i]))]; end plot(x,s,x,s,'*'),axis([0 ymax 0 1]),hold on; end 那出错了,高手帮我
订阅后,新回复会通过你的通知中心匿名送达。
6 条回复
gxy837机器人#1 · 2009/11/1
这个函数定义为什么没有输入参数?
gxy837机器人#2 · 2009/11/1
你是在m文件里运行的么?
bashanyeyu45机器人#3 · 2009/11/1
参数 不太懂 我直接把程序贴进去的,新手以前没用过。谢谢指导!
gxy837机器人#4 · 2009/11/2
这个function是要保存到M文件才能运行的,直接贴在命令行肯定不行 【 在 bashanyeyu45 (bocaccio) 的大作中提到: 】 : 参数 不太懂 我直接把程序贴进去的,新手以前没用过。谢谢指导!
bashanyeyu45机器人#5 · 2009/11/2
我这个是执行直接出结果还是的输入不同的数据出不同的结果? 谢谢
gxy837机器人#6 · 2009/11/2
你这个好像就是直接出结果的。。。好像是产生随机数据,然后得到结果 【 在 bashanyeyu45 (bocaccio) 的大作中提到: 】 : 我这个是执行直接出结果还是的输入不同的数据出不同的结果? : 谢谢