Matlab 产生伪随机调相信号与伪随机信号

伪随机调相信号是由多个CW自脉冲构成,第i个子脉冲有下式表示为

s_{i}(t)=e^{^{j(2\pi f_{0}t+\varphi _{i})}},t\in [0,\Lambda T]

式中\varphi _{i}只取0和\pi两个值,由m序列(一种伪随机序列,具有周期性,其周期随着m阶数的提高而增大)来控制。

matlab程序:

clear;
clc;
close all;

coef    = uint8([0 0 1 1]); % 反馈系数
a       = uint8([0 0 0 1]); % 寄存器初始值分配
freq    = 30;               % 信号的频率
Fs      = 20*freq;          % 采样频率
Ts      = 1/Fs;             % 采样间隔
t       = 0:Ts:1/freq-Ts;   % 信号持续时间

length_s = length(t);

% 反馈系数的长度
length_coef = length(coef);
% 计算M序列的一个周期的长度
length_out = 2^length_coef - 1;

length_m = 2*length_out;    % 生成伪随机信号的长度
seq = zeros(1,length_m);    % 为输出序列分配内存空间

for i = 1:1:length_m
   seq(i) = a(1,length_coef);
   an = mod(sum(bitand(coef,a)),2);                 % 求和(二进制)
   a(1,2:length_coef) = a(1,1:length_coef-1);       % 移位
   a(1,1) = an;                                     % 把求和得到的结果给第一个寄存器
end

Signal_M = zeros(1,length_s*length_m);      % 用于存储伪随机调相信号
for j = 1:1:length_m
    Signal_M((j-1)*length_s+1:j*length_s) = sin(2*pi*freq*t+pi*seq(j));
end
tm = (1:length_s*length_m)*Ts;

figure(1);
stairs(seq);
title('M 序列');
xlabel('x');
ylabel('y');
ylim([0 2]);
grid on;

figure(2);
plot(tm,Signal_M);
title('伪随机调相信号');
xlabel('time /s');
ylabel('Amplitude');
ylim([-2 2]);
grid on;

 

仿真结果:

Matlab 产生伪随机调相信号与伪随机信号_第1张图片 M序列
Matlab 产生伪随机调相信号与伪随机信号_第2张图片 标题伪随机调相信号

 

你可能感兴趣的:(Matlab信号处理)