修正的周期图法matlab代码

修正的周期图法

clc;
clear all;
% cd D:\Users\ASUS\Desktop\SIGNAL\signal_1
% load DSPINPUTSIG_MUSIC.mat;
% S1=musicsignal';
% S2=load ('DSPINPUTSIG_TEST.txt')';
Fs=1000;
f1=50;
f2=125;
f3=165;

N=256;%序列长度
n=0:N-1;
t=n/Fs;%采用的时间序列

xn=cos(2*pi*f1*t)+1.5*cos(2*pi*f2*t)+cos(2*pi*f3*t)+randn(size(n));
%%
S=xn;
N=length(S);%数据总长度
Nfft=1024;

%U为修正因子
U=1;
L=64;%L为每段数据长度
R=32;%R为一跳长度
num_L=fix(((N-L)/R)+1)%分段数

matrix_x=zeros(num_L,L);

fft_x=zeros(num_L,Nfft);
I=zeros(num_L,Nfft); 
Ip=zeros(1,Nfft);

for r=1:num_L
    start_xn=(r-1)*R+1;
    end_xn=(r-1)*R+L;
%     start_xn=round((r-1)*R)+1;%每段的第一个数字
%     end_xn=round((r-1)*R+L);%每段的最后一个数字
    
    if end_xn>N             %超出总长度
        matrix_x(r,:)=[S(start_xn:N),zeros(1,end_xn-N)];%超出位数补0
        fft_x(r,:)=fft(matrix_x(r,:),Nfft);%fft变换
        I(r,:)=fft_x(r,:).*conj(fft_x(r,:))/(L*U);%每一段的功率谱
        Ip=Ip+I(r,:);%功率谱相加
    else
    matrix_x(r,:)=S(start_xn:end_xn);
    fft_x(r,:)=fft(matrix_x(r,:),Nfft);
    I(r,:)=fft_x(r,:).*conj(fft_x(r,:))/(L*U);
    Ip=Ip+I(r,:);
    end
end

Ip=Ip/num_L;%求均值
var(Ip)
Ip=Ip/max(Ip);%归一化


figure(1);
p=0:2/Nfft:2-2/Nfft;
plot(p,Ip,'LineWidth',.2);

figure(2);
w=-1:2/Nfft:1-2/Nfft;
plot(w,fftshift(Ip),'LineWidth',.2);
xlabel('数字角频率/pi*rad');

title('INPUTSIG-MUSIC的功率谱估计结果(平均周期图法)','FontSize',10);
grid on;

num_L = 7分为七段
var= 38.0873 方差大小

周期图法

clc;
clear all;

Fs=1000;
f1=50;
f2=125;
f3=165;

N=256;%序列长度
Nfft=1024;
n=0:N-1;
t=n/Fs;%采用的时间序列

xn=cos(2*pi*f1*t)+1.5*cos(2*pi*f2*t)+cos(2*pi*f3*t)+randn(size(n));
%%
S=xn;
N=length(S);%数据总长度

U=1;%U为修正因子
L=64;%L为每段数据长度
R=64;%R为一跳长度

x=zeros(fix(N/R),L);
fft_x=zeros(fix(N/R),Nfft);
I=zeros(fix(N/R),Nfft); 
Ip=zeros(1,Nfft);
num_L=fix(N/R)
for r=1:fix(N/R)
    start_xn=round((r-1)*R)+1;%每段的第一个数字
    end_xn=round((r-1)*R+L);%每段的最后一个数字
    if end_xn>N             %超出总长度
        x(r,:)=[S(start_xn:N),zeros(1,end_xn-N)];%超出位数补0
        fft_x(r,:)=fft(x(r,:),Nfft);%fft变换
        I(r,:)=fft_x(r,:).*conj(fft_x(r,:))/(L*U);%每一段的功率谱
        Ip=Ip+I(r,:);%功率谱相加
    else
    x(r,:)=S(start_xn:end_xn);
    fft_x(r,:)=fft(x(r,:),Nfft);
    I(r,:)=fft_x(r,:).*conj(fft_x(r,:))/(L*U);
    Ip=Ip+I(r,:);
    end
end

Ip=Ip/fix(N/R);%求均值
var(Ip)
Ip=Ip/max(Ip);%归一化
w=-1:2/Nfft:1-2/Nfft;

figure(1);
p=0:2/Nfft:2-2/Nfft;
plot(p,Ip,'LineWidth',.2);
xlabel('数字角频率/pi*rad');
title('INPUTSIG-MUSIC的功率谱估计结果(平均周期图法)','FontSize',10);

figure(2);
w=-1:2/Nfft:1-2/Nfft;
plot(w,fftshift(Ip),'LineWidth',.2);
xlabel('数字角频率/pi*rad');
title('INPUTSIG-MUSIC的功率谱估计结果(平均周期图法)','FontSize',10);
grid on;

num_L =

 4

var =

51.3131方差大

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值