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

📄 structidentification.m

📁 系统辨识中
💻 M
字号:
%系统辨识实验(M序列)
%
%M序列 n=4 Np=2^4-1=15
clear;
clc;
load('expdata1.txt');
rawData=expdata1;%原始数据
sizeData=size(rawData);%获得数据大小
rawOutData=rawData(:,1);%原始数据输出
rawInData=rawData(:,2);%原始数据输入
%输出数据求和
rawOutAll=0;
for i=1:sizeData(1,1)
    rawOutAll=rawOutAll+rawOutData(i);
end
rawOutAve=rawOutAll/sizeData(1,1);%原始输出平均值
outData=rawOutData-rawOutAve;%扣除直流分量后的输出数据
inData=rawInData-45;%扣除直流分量后的输入数据
%
%不进行滤波处理
%
%%计算输出与输入之间的互相关函数
Rmz=zeros(1,sizeData(1,1));%init
Rmz=xcorr(outData,inData,'biased');   %%计算互相关函数   'biased'   - scales the raw cross-correlation by 1/M.
c=-Rmz(sizeData(1,1)-1); %c为补偿量 P.121
%%%%计算输入信号的自相关函数
Rm=zeros(1,sizeData(1,1));
Rm=xcorr(inData,'biased');   %%计算自相关函数 XCORR(A), when A is a vector, is the auto-correlation sequence.   
%%返回脉冲响应序列
G=zeros(1,sizeData(1,1));%inition g
for i=1:sizeData(1,1)
    G(i)=sizeData(1,1)*(Rm(i)+c)/(sizeData(1,1)+1)/5^2/10; % see P.115 4.5.32
end
t=1:15;
for i1=1:15
    g(i1)=G(i1+15);%从第二个周期开始取数
end
plot(t,g);
% Rmz1=Rmz';
% plot(t,Rmz1);
%H(l,k)=[g(k)     g(k+1) ...
%g(k+l-1);%k以1至dataNumber-2l+2取之间意选(P332).这我取k=50,l=10(保险起见)
%        g(k+1)   g(k+2) ...   g(k+1);
%        ...
%        g(k+l-1) g(k+l-1)...  g(k+2l-2)]
% case little noise
for l=1:15 %sizeData(1,1)
    %令|H(l)|=H(l)
    H(l)=0;
    for k=1:(15-2*l+2)  %(sizeData(1,1)-2*l+2)
        for i=1:l
            for j=1:l
                h(i,j)=G(k+j+i-2);
            end %end j
        end %end i
        %求detH(l,k)
        detH=det(h);
        H(l)=H(l)+detH;
    end %end k
    H(l)=H(l)/(15-2*l+2);   
end %end l
for n=1:8 %(sizeData(1,1)-1)%根据经验n一定小余8
    D(n)=H(n+1)/H(n+2);
end %end n
D %cout D
% rankh=rank(h);
% %rankSysMatrix=rank(h);%get system's real rank ;this is 3
% if det(h)==0
%     n=15;%the rank of the system
%     break
% end
% end
% x=1:sizeData(1,1);
% plot(x,G);

⌨️ 快捷键说明

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