pam调制

% 清除工作区和关闭所有图形窗口
clear all;
close all;

% 设置参数
N = 10; % 信号长度
M = 4; % M-PAM调制中的M值
A = 1; % 振幅
fc = 10; % 载波频率
fs = 1000; % 采样频率
T = 1/fs; % 采样间隔

% 生成随机M-PAM数据
data = randi([0 M-1], 1, N);
%data=[0,1,2,3,4,5,6,7,8,9];
disp(data);
% 生成格雷码映射
gray_map = gray2bin(0:M-1, 'pam', M);
gray_symbols = gray_map(data+1);
% 生成M-PAM调制信号
t = 0:T:(N-1)*T; % 时间向量
pam_symbols = 2*gray_symbols - M-1; % 符号映射
pam_waveform = A * pam_symbols; % 调制波形

% 可视化结果
figure;
stem(t, pam_symbols, 'linewidth', 2);
xlabel('时间 (s)');
ylabel('幅值');
title('M-PAM 调制信号的符号映射');


% 可选:添加载波
carrier_wave = cos(2*pi*fc*t); % 生成载波
modulated_signal = pam_waveform .* carrier_wave; % 调制信号与载波相乘
% 计算平均功率
avg_power = mean(abs(modulated_signal).^2);
disp(['平均功率:', num2str(avg_power)]);

% 计算每个符号在星座图中的坐标(由于是一维的M-PAM调制,虚部均为0)
constellation = pam_symbols;

% 计算每对符号之间的欧氏距离
distances = zeros(N, N);
for i = 1:N
    for j = 1:N
        distances(i, j) = abs(constellation(j) - constellation(i));
    end
end

% 显示欧氏距离矩阵
disp('欧氏距离矩阵:');
disp(distances);

% 星座图
figure;
scatter(real(modulated_signal), imag(modulated_signal), 'filled');
xlabel('实部');
ylabel('虚部');
title('星座图');
figure;
plot(t, modulated_signal, 'linewidth', 2);
xlabel('时间 (s)');
ylabel('幅值');
title('M-PAM 调制信号 (带载波)');


​​​​​​​

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值