⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.m

📁 机器人控制系统的设计与MATLAB机器人控制系统的设计与MATLAB机器人控制系统的设计与MATLAB
💻 M
字号:
clear;
%function sizerand用来产生一个数据包大小的随机数
%fucntion tiemrand用来产生一个数据包产生间隔大小的随机数

interval=50;%读取缓存的时间间隔

%定义缓存使用的数据结构
buffer.size=0;%数据包的大小
buffer.time=0;%数据包的产生时间

%根据timepdf和sizepdf可以确定每ms最多产生100bytes的数据
%每ms内最多产生1/2.5=0.4个数据包,则50ms内最多产生20个数据包
buffersize=21;%缓存中存数据包的个数
front=0;rear=0;N=1;%front和rear分别是缓存的头部和尾部
flag=0;
average=0;
for T=0:0.1:1000%T划分的越小buffer(N).time-T就会越趋近于0这样结果更准确(26行)
    %%%%=================================向缓存中写入数据==========================
                             %%%%%%%%%产生时间随机数模块%%%%%%%%%
    if T==0|buffer(N).time<T
        temp=timerand;
        
        if N==1&flag==0
            buffer(N).time=temp;
        elseif (N==1|N==2)&flag==1%若此前读完缓存时buffer(N).time==0此时程序会先进入产生时间随机数模块
                                    % 此时N==1否则会先进入产生数据包大小模块N==2
            buffer(N).time=buffer(1).time+temp;
            %disp('fuck');
            flag=0;
        else
            buffer(N).time=buffer(N-1).time+temp;
        end
                             %%%%%%%%%%%%产生数据包大小模块%%%%%%%%%%%%%%%%
    elseif buffer(N).time-T<0.1%当时间快要到达产生数据包的时间
              
        if front==mod(rear+1,buffersize)%判断缓存是否已经满了
            break
        end
        buffer(N).size=sizerand;
        N=N+1;
        buffer(N).size=0;%用来初始化新的buffer结构体,因为N加1了
        buffer(N).time=0;
        rear=mod(rear+1,buffersize);
    end
    %%=================================向缓存中写入数据结束==========================
    if mod(T,interval)==0&T>0%每interval=50ms读取一次缓存,50ms内最多能读取到20个数据包
        sum=0;
            for k=1:(N-1)
                sum=sum+buffer(k).size;                  
            end            
            if average==0
                average=sum/interval;
            else
                average=(average+sum/interval)/2
            end
            if buffer(N).time==0
                buffer(1).time=buffer(N-1).time;
            else
                buffer(1).time=buffer(N).time;
            end
            rear=0;front=0;N=1;
            flag=1;%说明缓存被读取过一次
    end
end







⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -