
关于matlab编程的小问题 这个程序从出错 都疯了
functionimprove_main(N,F)%针对实际情况的仿真f=zeros(1,N);%不同的标签数开始的桢数相同,用来记录总的帧数Nn=zeros(1,N);...
function improve_main(N,F)
%针对实际情况的仿真
f=zeros(1,N); %不同的标签数开始的桢数相同,用来记录总的帧数
Nn=zeros(1,N); %总共的时隙数
st=zeros(1,N);
avr_N=zeros(1,N);
for j=1:10
for i=1:N
f(i)=0;
n=i;
Nn(i)=0;
fn=F; %当前帧数
while n>0
f(i)=f(i)+fn; %记载总的帧数
[Nc,Nr,No]=improve_proc(n,fn); %计算碰撞情况
fn=No+Nc+Nr
if Nc<No
N=improve_change(N,Nr);
else if Nr/N<0.3112
N=improve_change(N,Nr);
else Nn(i)=Nr+Nn(i); %共正确识别的标签数目
n=i-Nn(i); %未识别的标签数目
if n>0
fn=improve_framelength(n); %
end
end
%avr(i)=round(f(i)/i);
avr_N(i)=f(i)+avr_N(i);
end
end
avr_N=avr_N/10;
function N=improve_change(N,Nr)
if Nr/N<=0.3112&&Nr/N>0.1561
N=N*2
else if Nr/N<=0.1561&&Nr/N>0.02094
N=N*4
else if Nr/N<=0.02094
N=N*8
end
end
end 展开
%针对实际情况的仿真
f=zeros(1,N); %不同的标签数开始的桢数相同,用来记录总的帧数
Nn=zeros(1,N); %总共的时隙数
st=zeros(1,N);
avr_N=zeros(1,N);
for j=1:10
for i=1:N
f(i)=0;
n=i;
Nn(i)=0;
fn=F; %当前帧数
while n>0
f(i)=f(i)+fn; %记载总的帧数
[Nc,Nr,No]=improve_proc(n,fn); %计算碰撞情况
fn=No+Nc+Nr
if Nc<No
N=improve_change(N,Nr);
else if Nr/N<0.3112
N=improve_change(N,Nr);
else Nn(i)=Nr+Nn(i); %共正确识别的标签数目
n=i-Nn(i); %未识别的标签数目
if n>0
fn=improve_framelength(n); %
end
end
%avr(i)=round(f(i)/i);
avr_N(i)=f(i)+avr_N(i);
end
end
avr_N=avr_N/10;
function N=improve_change(N,Nr)
if Nr/N<=0.3112&&Nr/N>0.1561
N=N*2
else if Nr/N<=0.1561&&Nr/N>0.02094
N=N*4
else if Nr/N<=0.02094
N=N*8
end
end
end 展开
展开全部
我改了一些语法错误,不知逻辑关系是不是这样
function improve_main(N,F)
%针对实际情况的仿真
f=zeros(1,N); %不同的标签数开始的桢数相同,用来记录总的帧数
Nn=zeros(1,N); %总共的时隙数
st=zeros(1,N);
avr_N=zeros(1,N);
for j=1:10
for i=1:N
f(i)=0;
n=i;
Nn(i)=0;
fn=F; %当前帧数
while n>0
f(i)=f(i)+fn; %记载总的帧数
[Nc,Nr,No]=improve_proc(n,fn); %计算碰撞情况
fn=No+Nc+Nr;
if Nc<No
N=improve_change(N,Nr);
elseif Nr/N<0.3112
N=improve_change(N,Nr);
else
Nn(i)=Nr+Nn(i); %共正确识别的标签数目
end
n=i-Nn(i); %未识别的标签数目
if n>0
fn=improve_framelength(n); %
end
end
%avr(i)=round(f(i)/i);
avr_N(i)=f(i)+avr_N(i);
end
end
avr_N=avr_N/10
function N=improve_change(N,Nr)
if Nr/N<=0.3112&&Nr/N>0.1561
N=N*2;
elseif Nr/N<=0.1561&&Nr/N>0.02094
N=N*4;
elseif Nr/N<=0.02094
N=N*8;
end
end
%%提示你一下,每个条件句后面都要用end结束,else和if之间不用空格,用的话就是一个嵌套的判断了,相当与else(if...else.....end)。
function improve_main(N,F)
%针对实际情况的仿真
f=zeros(1,N); %不同的标签数开始的桢数相同,用来记录总的帧数
Nn=zeros(1,N); %总共的时隙数
st=zeros(1,N);
avr_N=zeros(1,N);
for j=1:10
for i=1:N
f(i)=0;
n=i;
Nn(i)=0;
fn=F; %当前帧数
while n>0
f(i)=f(i)+fn; %记载总的帧数
[Nc,Nr,No]=improve_proc(n,fn); %计算碰撞情况
fn=No+Nc+Nr;
if Nc<No
N=improve_change(N,Nr);
elseif Nr/N<0.3112
N=improve_change(N,Nr);
else
Nn(i)=Nr+Nn(i); %共正确识别的标签数目
end
n=i-Nn(i); %未识别的标签数目
if n>0
fn=improve_framelength(n); %
end
end
%avr(i)=round(f(i)/i);
avr_N(i)=f(i)+avr_N(i);
end
end
avr_N=avr_N/10
function N=improve_change(N,Nr)
if Nr/N<=0.3112&&Nr/N>0.1561
N=N*2;
elseif Nr/N<=0.1561&&Nr/N>0.02094
N=N*4;
elseif Nr/N<=0.02094
N=N*8;
end
end
%%提示你一下,每个条件句后面都要用end结束,else和if之间不用空格,用的话就是一个嵌套的判断了,相当与else(if...else.....end)。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询