在通信系統(tǒng)中的隨機(jī)噪聲會(huì)使模擬信號產(chǎn)生失真紧阔,是數(shù)字信號產(chǎn)生誤碼,并且他還是限制信道容量的一個(gè)重要因素烤黍。因此知市,人們經(jīng)常希望消除或減少通信系統(tǒng)中的隨機(jī)噪聲。
但是速蕊,有時(shí)候人們會(huì)希望獲得隨機(jī)噪聲嫂丙。比如,在實(shí)驗(yàn)室對通信設(shè)備或系統(tǒng)性能進(jìn)行測試规哲,可能要故意加入一定的噪聲跟啤。又比如在戰(zhàn)爭通信中,實(shí)現(xiàn)高保密的通信唉锌,也希望利用隨機(jī)噪聲來迷惑敵方隅肥。
那么就來了一個(gè)名字“偽隨機(jī)序列”,他具有類似于隨機(jī)噪聲的某些統(tǒng)計(jì)特性袄简,同時(shí)又能夠重復(fù)產(chǎn)生腥放。所以運(yùn)用廣泛,今天來講講m序列绿语。
m序列是最長線性反饋移位寄存器序列的簡稱秃症。它是由帶線性反饋的移存器產(chǎn)生的周期最長的序列。
從上圖可以看出吕粹,先設(shè)置初始狀態(tài)伍纫,之后根據(jù)框圖的原型來進(jìn)行移位,進(jìn)行mod2運(yùn)算昂芜。這樣最后移位15次后又回到初始狀態(tài)(1,0,0,0)莹规。所以除了全零狀態(tài),一共可以用15種泌神。
一般來說良漱,一個(gè)n級線性反饋移存器可能產(chǎn)生的最長周期等于2^n-1
接下來是matlab代碼
close all; clear all; clc;
fb=200000;
upsample_NUM=20; %每個(gè)符號的采樣點(diǎn)數(shù)目
BIT_NUM=520;
load RC_LPF.mat;
close all為關(guān)閉所有窗口舞虱,clear all為清除所有變量,clc清除命令
這里加載了一個(gè)LPF文件母市。
下面的公式可以作為依據(jù)直接產(chǎn)生m序列:
%產(chǎn)生m序列
%m序列本原多項(xiàng)式:x^3+x+1, x^4+x+1, x^5+x^2+1,x^6+x+1矾兜, x^7+x^3+1
% g3=[0 1 1];
% g4=[0 0 1 1];
% g5=[0 0 1 0 1];
% g6=[0 0 0 0 1 1];
% g7=[0 0 0 1 0 0 1];
g8=[0 0 0 1 1 1 0 1];
這里的要求是2的8次方的m序列,所以m的本原多項(xiàng)式可以得出患久。g8為特征多項(xiàng)式表示的數(shù)組模式椅寺,就相當(dāng)于反饋系數(shù)cof,注意一開頭的都是0蒋失;
%下面產(chǎn)生m=8的序列
m=length(g8);
N=2^m-1;
register=[zeros(1,m-1) 1]; %移位寄存器的初始狀態(tài)
new_register=zeros(1,m);
m_seq_out8=zeros(1,N+1);
m_seq_out8(1)=register(m);
for i=2:N
new_register(1)=mod(sum(g8.*register),2); %移存器與反饋系數(shù)進(jìn)行模2加返帕,更新移存器第1個(gè)數(shù)
for j=2:m
new_register(j)=register(j-1); %更新移存器其他數(shù)
end
register=new_register;
m_seq_out8(i)=register(m); %輸出
end
m_seq_out9=2*m_seq_out8-1; %雙極性變換
seq_byte=zeros(1,32); %32字節(jié),每個(gè)字節(jié)8bit篙挽,m序列被存放在該32字節(jié)中
產(chǎn)生m=8的序列荆萤,當(dāng)然N=2^m-1,這是最長周期铣卡,設(shè)置移位寄存器的初始狀態(tài)链韭,m-1列的0,最后是1煮落,應(yīng)該是[00000001]敞峭,即a7為1,其他為0.蝉仇。
接下來的循環(huán)語句就是更新移存器旋讹,定義了新的變量new_register保存新的數(shù)據(jù),最后返還給register量淌。最后m序列數(shù)據(jù)都被存在32個(gè)字節(jié)中骗村。
for i=1:32
for j=1:8
seq_byte(i)=seq_byte(i)*2;
if m_seq_out8((i-1)*8+j)==1
seq_byte(i)=seq_byte(i)+1;
end
end
end
data1=zeros(1,20*length(m_seq_out9)); %將采樣率擴(kuò)展20倍,每個(gè)bit對應(yīng)20個(gè)樣值
for i=1:length(m_seq_out9)
for j=1:20
data1(20*(i-1)+j)=m_seq_out9(i);
end
end
data2=[data1,data1,data1,data1];
data3=convn(data2,LPF1); %LPF1為低通濾波器呀枢,對應(yīng)抽樣率為(20*200KSPS=4 MSPS)
i=1:length(data3);
figure;
plot(i,data3);
接下來的語法嵌套for循環(huán)胚股,最后將data和LPF進(jìn)行卷積,也就是說在頻域進(jìn)行相乘裙秋,這時(shí)候會(huì)出現(xiàn)“吉布斯”效應(yīng)琅拌,就是低通濾波器產(chǎn)生的峰值谷值會(huì)比一跌個(gè)8.5%左右,所以產(chǎn)生了這樣的波形摘刑。
這樣就產(chǎn)生了想要的波形~
把需要的語法熟悉进宝,matlab和c語言語法很相似。任何模型都是需要算法作為基礎(chǔ)的枷恕,好好學(xué)習(xí)党晋,加油