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;

 

仿真结果:

M序列
M序列
伪随机调相信号.jpg
标题伪随机调相信号

 

  • 5
    点赞
  • 55
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jk99528878769

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值