www.gusucode.com > Self-adaptive Filter and Continuous Subdivision Fourier > Mymusic_rootmusic_Test.m

    %Self-adaptive Filter and Continuous Subdivision Fourier
%Transform are Listed as the Following

clear
clc
%第一种情况
load bar_1_normal_halfload;
data=bar_1_normal_halfload;
slip=0.018;
%第二种情况
%load bar_1_normal_fullload;
%data=bar_1_normal_fullload;
%slip=0.036;

fRated=50.0;


is0=data(1:10:201200,4);
is0=is0*20*sqrt(2)/4.4; 
fs=10060/10;

is0=is0-mean(is0);

is0=is0';

ts=1/fs;

wn=[40/(fs/2) 60/(fs/2)];                  

[filterb,filtera]=butter(2,wn);

is0=filter(filterb,filtera,is0);%Pay attention to adjust fs,simultaneously
is0=filter(filterb,filtera,is0);%Pay attention to adjust fs,simultaneously

is=is0(5*fs:1:20*fs-1);

isa=is';

clear is;

n100=length(isa);

is=isa(fs:1:(n100-fs-1));


M=fs;

mmm=500;

M11=M+mmm;

clear is;

is=isa;

for n=1:M11
    xn(n)=is(n+fs);
end
%% 通过不同的算法,求出xn中含有的频率值。
clear is;

is=xn';

NNN=round(length(is)*3/4);
XX=corrmtx(is,NNN,'mod');

%music算法
[sResult,wResult]=pmusic(XX,50,length(is),fs);

stem(wResult,sResult);

[vMax,mIndex]=max(sResult)


%rootmusic算法
[fResult,pResult]=rootmusic(XX,20,fs);%大于20,效果理想。20为经验值,如何确定信号的个数?

fResult(1:2:length(fResult));

pResult;

stem(fResult(1:2:length(fResult)),pResult);

fResult0=fResult(1:2:length(fResult));

ll=1;
for n=1:length(fResult0)
    if(fResult0(n)>48.0 & fResult0(n)<52.0)
        fReal(ll)=fResult0(n);
        pReal(ll)=pResult(n);
        ll=ll+1;
    end
end

stem(fReal,pReal);
axis([45 55 -inf inf]);