#Matlab 偽隨機訊號的產生(M序列)
這裡主要說明兩種方法,一是使用m檔編輯,二是用simulink產生
一、用m檔編輯
Np=63;%循環週期
delta_T = 1;%時鐘拍子
##a=1;%幅度%初始化M序列
M(1)=1;
M(2)=0;
M(3)=0;
M(4)=1;
M(5)=1;
M(6)=0;
M_XuLie(Np) = 0;
for n = 1 : Np
temp = xor(M(6), M(5));
if(temp == 0)
M_XuLie(n) = a;
else
M_XuLie(n) = -a;
end
M(6) = M(5);
M(5) = M(4);
M(4) = M(3);
M(3) = M(2);
M(2) = M(1);
M(1) = temp;
end
figure(4)
stairs(M_XuLie)
ylim([-2 2])
說明:
1.原理:由於是用程式碼書寫,可能原理表達不是很直觀,後面會以模擬形式給出原理
2.週期:若有N個移位暫存器,那麼週期為2^N-1
3.週期的延拓:
r = 3; % 週期數
u=repmat(M_XuLie,1,r 1);%將M序列賦給輸入,作為輸入訊號
二、使用simulink產生M序列
1 選6個移位暫存器,就是Z分之1那個 依序排列好,初始條件(initial conditions)全都設為1
2 先把這6個移位暫存器連結起來第一個輸出連第二個輸入,以此類推到第六個接OUT,out這裡再接一個scope以便觀察訊號波形或接到工作空間(本例是接到工作空間中)。依照下列方法設定變數名稱和輸出格式。
注意:盡量選矩陣形式輸出,否則呼叫不方便。
3 選取一個logical operator,並從設定調成XOR,2輸入端
4 繼續連線
5 設定參數,主要是設定步長和總運行時間(點選選單simulation-configuration parameters設定)
6 點選執行 scope中顯示的便是m序列!或在命令列中輸入stairs(M_seque)
matlab中如何產生pn序列
for k=1:length(x) gfpretty(x(k,:));end
m偽隨機序列Matlab原始碼
%5階m序列
% 在MATLAB指令視窗輸入以下:
% fbconnection=[0 1 0 0 1];
% mseq="m"_sequence(fbconnection);
% mseq#function mseq="m"_sequence(fbconnection)
n=length(fbconnection);
N=2^n-1;
register=[ones(1,n-1) 1]; %移位暫存器的初始狀態
mseq(1)=register(n); %m序列的第一個輸出碼元
for i="2:N"
newregister(1)=mod(sum(fbconnection.*register),2);
for j="2:n",
newregister(j)=register(j-1);
end;
register="newregister";
mseq(i)=register(n);
end### ###儲存為m_sequence.m;####
以上是怎樣用matlab產生寬頻隨機訊號的詳細內容。更多資訊請關注PHP中文網其他相關文章!