系统辨识matlab仿真程序,一般参考书上都是介绍的把方差为1的白噪声作为输入。我做的关于电炉温控系统的系统辨识,需要把M序列作为系统输入。可是程序写修改了老是报错!跪求各位大神大牛们帮忙!感激不尽!真的没有财富值了,好人一生平安!
白噪声序列并不是m序列。但是m序列是一种特殊的白噪声序列。m序列的特性决定它在信号编码处理中的广泛应用。例如CDMA,码分多路复用。
m序列是最基本的PN序列。PN序列就伪随机序列。 伪随机序列的存在是因为在实际中并不存在完美的随机序列。m序列是最长线性反馈移位寄存器序列的简称。这就说明了,m序列是由反馈移位寄存器来产生的。例如n=9的m序列产生移位寄存器如下图所示:
移位寄存器的形式,取决于n的值。
1. m序列每一周期中 1 的个数比 0 的个数多 1 个
2. 相异m序列,按模2相加所得的序列仍为m序列
3. m序列的自相关函数为近似脉冲狄拉克δ函数,n越大,越理想。这一点是m序列的关键。
以下以n=7为例,来演示m序列的产生
%===================================
n = 7;
taps=2;
tap1=1;
tap2=7;
flag = 0;
rand('state',sum(100*clock))
while 1
abuff = round(rand(1,n));
%make sure not all bits are zero
if find(abuff==1)
break
end
end
for i = (2^n)-1:-1:1
xorbit = xor(abuff(tap1),abuff(tap2)); %feedback bit
abuff = [xorbit abuff(1:n-1)];
y(i) = (-2 .* xorbit) + 1; %yields one's and negative one's (0 -> 1; 1 -> -1)
end
stem(y)
ylim([-2,2]);
xlim([1,2^(n+1)]);
figure;
[c,lags]=xcorr(y);
plot(lags,c)
%===================================
m序列
m序列自相关: