group delay how to add it?

8 ビュー (過去 30 日間)
Ali
Ali 2011 年 3 月 17 日
回答済み: Vidhi Agarwal 2024 年 8 月 2 日
clc;
clear all;
M=32;
x=RANDINT(100e3,1,M);
y=modulate(modem.qammod(M),x);
ynoisy=awgn(y,27,'measured');
%%I think here we should have group delay??
scatterplot(ynoisy),grid;
z=demodulate(modem.qamdemod(M),ynoisy);
figure (2);
subplot(2,1,1);
stem(x(1:10),'filled'),grid;title('transmitted data')
subplot(2,1,2);
stem(z(1:10),'filled'),grid;title('received data');
[num ty]=symerr(x,z);
I want to add Group delay to QAM and show the effect of group delay Also I know there is function for this job but how to use it! http://www.mathworks.com/help/toolbox/signal/grpdelay.html

回答 (1 件)

Vidhi Agarwal
Vidhi Agarwal 2024 年 8 月 2 日
Hi Ali,
To add group delay using the “grpdelay” function in MATLAB, you need to design a filter that introduces the desired group delay and then apply this filter to your signal. Below is modified code for the same:
clc;
clear all;
% Parameters
M = 32;
numSymbols = 100e3;
SNR = 27; % Signal-to-noise ratio in dB
groupDelay = 5; % Desired group delay in samples
% Generate random data
x = randi([0 M-1], numSymbols, 1);
% Modulate the data using QAM
y = qammod(x, M);
% Add AWGN noise
ynoisy = awgn(y, SNR, 'measured');
% Design an FIR filter to introduce the desired group delay
b = fir1(2*groupDelay, 0.5); % Low-pass filter with order 2*groupDelay
h = dfilt.dffir(b);
% Apply the filter to introduce group delay
yDelayed = filter(h, [ynoisy; zeros(groupDelay, 1)]);
yDelayed = yDelayed(groupDelay+1:end); % Remove the initial transient
% Scatter plot of noisy signal with group delay
scatterplot(yDelayed), grid on;
title('Noisy QAM Signal with Group Delay');
% Demodulate the delayed signal
z = qamdemod(yDelayed, M);
% Plot transmitted vs. received data
figure(2);
subplot(2,1,1);
stem(x(1:10), 'filled'), grid on;
title('Transmitted Data');
subplot(2,1,2);
stem(z(1:10), 'filled'), grid on;
title('Received Data');
% Calculate symbol error rate
[num, ty] = symerr(x, z);
disp(['Number of symbol errors: ', num2str(num)]);
disp(['Symbol error rate: ', num2str(ty)]);
For detailed information on “qammod” and “qamdemod” refer to the following documentation:
Hope that Helps!

カテゴリ

Help Center および File ExchangePropagation and Channel Models についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by