• Matlab编程实例(1) 移动平均


    MATLAB数字信号处理作业,把自己写的程序发上来..欢迎交流~

    QQ 五幺九七九零六四
     
    首先是任意点移动平均:
    主程序:mov_average_main.m (运行)
    函数:mov_average.m  (多点移动平均)
     
    /////////mov_average_main.m///////////
    %多点移动平均
    close all;
    clear all;
    numSample=500;    %采样精度为100
    l=input('请输入用于平滑的窗口大小"n"');
    if l>1 && l<50;    %对输入变量控制
    else    error('您的输入有误!');
    end;
    t = linspace(0,pi/10,numSample); %创建向量
    A=10;%信号幅值
    p=0;%信号相位
    s = A*sin(100 * t+p);%产生正弦信号
    n=randn(1,numSample);%用高斯随机构造白噪声
    y=s+n;%叠加白噪声
    subplot(4,1,1);plot(t,s,'r');
    title('原信号');
    subplot(4,1,2);plot(t,n,'b');
    title('白噪声信号');
    subplot(4,1,3);plot(t,y,'k');
    title('叠加白噪声后信号');
    %调用移动平滑函数
    y=mov_average(numSample,l,y);%numSample为采样精度,窗口大小为n
    subplot(4,1,4);plot(t,y,'k');
    title('n点移动平滑后');
     
    ///////mov_average.m /////////
    function y=mov_average(numSample,n,f)
    %mov_average是多点移动平滑函数
    %numSample为采用精度
    %n为用于平滑的窗口大小,其值应大于零且小于numSample
    %f为需要进行移动平滑处理的函数
    m=0;%m代表正在处理的点
    while m<numSample-n+1;%采样点终止位置
    m=m+1;
    temp=0;%temp用于求n点函数值之和,此处将其清零
    for p=0:1:n-1; %p为窗口内变量的增量
    temp=temp+f(m+p) %n个点的数值总和
    end;
    f(m)=temp/n;%求均值
    end;
    y=f;%回代

     

  • 相关阅读:
    [BZOJ]1040: [ZJOI2008]骑士
    [BZOJ]1177: [Apio2009]Oil
    【luogu3384】【模板】树链剖分
    【NOIP2012TG】solution
    【NOIP2014TG】solution
    【NOIP2016TG】solution
    【NOIP2015TG】solution
    【NOIP2016】【LCA】【树上差分】【史诗级难度】天天爱跑步
    【网络流】【BZOJ1221】【HNOI2001】软件开发
    【网络流】【BZOJ1061】【NOI2008】志愿者招募
  • 原文地址:https://www.cnblogs.com/zhangzhifeng/p/5332578.html
Copyright © 2020-2023  润新知