📄 mseq.m
字号:
function [ s ] = mseq( m )
% generates an m-sequence, from M. Porter.
%
% fmin = min frequency
% fmax = max frequency
% T = duration of time-series
% samplerate = samples per second
% Michael B. Porter April 2000
% formulas from Proakis, Digital Communications
if ( m < 2 | m > 15 | m ~= fix( m ) ) return; end
% set up the coefficients ( used in the recursion: m_l = \sum c_l m_l )
switch m
case 2, c = [ 1 1 ];
case 3, c = [ 1 0 1 ];
case 4, c = [ 1 0 0 1 ];
case 5, c = [ 1 0 0 1 0 ];
case 6, c = [ 1 0 0 0 0 1 ];
case 7, c = [ 1 0 0 0 0 0 1 ];
case 8, c = [ 1 0 0 0 1 1 1 0 ];
case 9, c = [ 1 0 0 0 0 1 0 0 0 ];
case 10, c = [ 1 0 0 0 0 0 0 1 0 0 ];
case 11, c = [ 1 0 0 0 0 0 0 0 0 1 0];
case 12, c = [ 1 0 0 0 0 0 1 0 1 0 0 1];
case 13, c = [ 1 0 0 0 0 0 0 0 0 1 1 0 1];
case 14, c = [ 1 0 0 0 1 0 0 0 1 0 0 0 0 1 ];
case 15, c = [ 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 ];
end
length = 2^m - 1;
%successive shifts with feedback following Proakis p. 433
seed = [ 1 zeros( 1, m - 1 ) ]; % all zero seed except for one
for ii = 1 : length
out( 1 : m - 1 ) = seed( 2 : m );
out( m ) = mod( c * seed' , 2 ); % addition mod 2
seed = out;
s( ii ) = out( 1 );
end
% convert to a +/- sequence
s = 2*s-1;
% check autocorrelation properties
%shat = fft( s );
%scorr = real( ifft( shat .* conj( shat ) ) );
%plot( scorr )
%Make it a column vector
if size(s, 2),
s=s.';
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -