给我一段matlab的ppm调制解调代码
时间: 2023-08-23 15:31:23 浏览: 195
ppm调制 matlab源程序代码
以下是一个简单的MATLAB代码,演示了如何进行PPM调制和解调:
PPM调制代码:
```matlab
% PPM调制
fs = 10000; % 采样频率
T = 1/fs; % 采样周期
fc = 1000; % 载波频率
Tc = 1/fc; % 载波周期
n = 8; % 每个样本值对应的二进制位数
Ts = n*T; % PPM信号周期
A = 1; % 调制信号幅度
B = 0.5; % PPM信号幅度
t = 0:T:Ts-T; % 时间序列
f = A*sin(2*pi*100*t);% 待调制的调制信号
L = length(f); % 采样点数
bits = 2^n-1; % 每个样本值对应的二进制位数
t_sample = 0:T:n*T-T;% 样本时刻序列
f_sample = A*sin(2*pi*100*t_sample); % 在样本时刻下采样到的信号
sample_values = round((f_sample+B)/B*bits/2); % 对样本值进行量化
sample_values_bin = dec2bin(sample_values,n); % 将样本值转换为二进制
sample_values_bin = reshape(sample_values_bin',1,[]); % 将二进制串展开
ppm_signal_bin = reshape(sample_values_bin,bits,[]); % 将二进制串分割成每个样本值对应的二进制串
ppm_signal_bin = ppm_signal_bin'; % 将二进制串转置
ppm_signal_bin = bin2dec(ppm_signal_bin); % 将二进制串转换为整数
ppm_signal = B*(1+ppm_signal_bin/bits).*sin(2*pi*fc*t(1:bits:end)); % PPM信号
figure;
plot(t,f,'b',t(1:bits:end),ppm_signal,'r');
xlabel('Time (s)');
ylabel('Amplitude');
title('PPM Modulation');
legend('Modulating Signal','PPM Signal');
```
PPM解调代码:
```matlab
% PPM解调
fs = 10000; % 采样频率
T = 1/fs; % 采样周期
fc = 1000; % 载波频率
Tc = 1/fc; % 载波周期
n = 8; % 每个样本值对应的二进制位数
Ts = n*T; % PPM信号周期
A = 1; % 调制信号幅度
B = 0.5; % PPM信号幅度
t = 0:T:Ts-T; % 时间序列
f = A*sin(2*pi*100*t);% 待调制的调制信号
L = length(f); % 采样点数
bits = 2^n-1; % 每个样本值对应的二进制位数
t_sample = 0:T:n*T-T;% 样本时刻序列
f_sample = A*sin(2*pi*100*t_sample); % 在样本时刻下采样到的信号
sample_values = round((f_sample+B)/B*bits/2); % 对样本值进行量化
sample_values_bin = dec2bin(sample_values,n); % 将样本值转换为二进制
sample_values_bin = reshape(sample_values_bin',1,[]); % 将二进制串展开
ppm_signal_bin = reshape(sample_values_bin,bits,[]); % 将二进制串分割成每个样本值对应的二进制串
ppm_signal_bin = ppm_signal_bin'; % 将二进制串转置
ppm_signal_bin = bin2dec(ppm_signal_bin); % 将二进制串转换为整数
ppm_signal = B*(1+ppm_signal_bin/bits).*sin(2*pi*fc*t(1:bits:end)); % PPM信号
% PPM信号解调
ppm_demod = zeros(1,L/bits);
for i = 1:length(ppm_demod)
ppm_bin = (ppm_signal_bin(i)-1)*bits/bits; % 将整数转换为对应的二进制脉冲位置
ppm_demod(i) = ppm_bin/bits*B; % 得到对应的模拟信号样本值
end
demod_signal = repmat(ppm_demod,1,bits); % 重构得到解调后的信号
figure;
plot(t,demod_signal,'b',t,f,'r');
xlabel('Time (s)');
ylabel('Amplitude');
title('PPM Demodulation');
legend('Demodulated Signal','Modulating Signal');
```
阅读全文