matlab仿真系统辨识中M序列作为系统输入怎么写程序?

系统辨识matlab仿真程序,一般参考书上都是介绍的把方差为1的白噪声作为输入。我做的关于电炉温控系统的系统辨识,需要把M序列作为系统输入。可是程序写修改了老是报错!跪求各位大神大牛们帮忙!感激不尽!真的没有财富值了,好人一生平安!

白噪声序列并不是m序列。但是m序列是一种特殊的白噪声序列。m序列的特性决定它在信号编码处理中的广泛应用。例如CDMA,码分多路复用。

下面详细介绍m序列的特性,产生方式和Mablab例程。

m序列是最基本的PN序列。PN序列就伪随机序列。 伪随机序列的存在是因为在实际中并不存在完美的随机序列。m序列是最长线性反馈移位寄存器序列的简称。这就说明了,m序列是由反馈移位寄存器来产生的。例如n=9的m序列产生移位寄存器如下图所示:

移位寄存器的形式,取决于n的值。

m序列特性的特性:

1. m序列每一周期中 1 的个数比 0 的个数多 1 个

2. 相异m序列,按模2相加所得的序列仍为m序列

3. m序列的自相关函数为近似脉冲狄拉克δ函数,n越大,越理想。这一点是m序列的关键。

Mablab例程

以下以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序列自相关:

温馨提示:答案为网友推荐,仅供参考
相似回答