MATLAB设置参数产生超声波衰减信号,使用正交振幅调制对超声波信号进行64QAM调制与解调,得到调制后波形和解调后与原信号波形曲线对比图,并生成误码率曲线,生成星座图
时间: 2023-12-08 15:06:16 浏览: 100
对于超声波信号的衰减模型,可以采用Beer-Lambert定律。具体的,若超声波信号在介质中传播的距离为d,频率为f,介质的吸收系数为α,则信号的强度将按照以下公式衰减:
I = I0⋅exp(-αd)
其中,I0是信号入射介质时的强度。
在MATLAB中,可以通过设置alpha和d两个参数来模拟超声波信号的衰减过程。
接下来,我们可以生成64QAM调制信号和解调信号,得到调制后波形和解调后与原信号波形曲线对比图以及误码率曲线和星座图。这部分代码如下:
```
% 设置参数
alpha = 0.2; % 吸收系数
d = 10; % 传播距离
f = 1e6; % 超声波信号频率
fs = 16*f; % 采样率
fc = 4*f; % 载波频率
T = 1/fc; % 周期
t = 0:1/fs:T-1/fs; % 采样时间序列
N = length(t); % 采样点数
A = 1; % 振幅
M = 64; % 星座大小
% 生成64QAM调制信号
data = randi([0 M-1], [1, N/2]);
constellation = qammod(data, M, 'gray');
signalI = real(constellation);
signalQ = imag(constellation);
signal = zeros(1, N);
signal(1:2:end) = signalI;
signal(2:2:end) = signalQ;
% 超声波信号衰减
attenuation = exp(-alpha*d);
signal = signal*attenuation;
% 正交振幅调制
carrierI = cos(2*pi*fc*t);
carrierQ = sin(2*pi*fc*t);
modulatedI = signal.*carrierI;
modulatedQ = signal.*carrierQ;
% 解调信号
demodulatedI = modulatedI.*carrierI;
demodulatedQ = modulatedQ.*carrierQ;
demodulated = demodulatedI + demodulatedQ;
% 误码率曲线
SNR = -10:2:20;
ber = zeros(size(SNR));
for i = 1:length(SNR)
noisyI = awgn(modulatedI, SNR(i), 'measured');
noisyQ = awgn(modulatedQ, SNR(i), 'measured');
noisySignal = noisyI.*carrierI + noisyQ.*carrierQ;
noisyDemodI = noisySignal.*carrierI;
noisyDemodQ = noisySignal.*carrierQ;
noisyDemod = noisyDemodI + noisyDemodQ;
noisyData = qamdemod(noisyDemod, M, 'gray');
[~, ber(i)] = biterr(data, noisyData);
end
% 星座图
scatterplot(constellation)
% 调制后波形和解调后与原信号波形曲线对比图
figure
subplot(311)
plot(t, signal)
title('原信号')
subplot(312)
plot(t, modulatedI)
hold on
plot(t, modulatedQ)
title('正交振幅调制后信号')
legend('In-phase', 'Quadrature')
subplot(313)
plot(t, signal - demodulated)
title('解调后信号与原信号的差')
```
运行以上代码,即可得到相应的结果。
阅读全文