% Parameters
omega_a = 0.1*pi;
omega_b = 0.05*pi;
omega_I = 0.5*pi;
omega_Q = 0.5*pi;
fs = 1000; % Sampling frequency
T = 1/fs; % Sampling period
t = 0:200; % Time vector
% Generate input signals
x1 = cos(omega_a*t);
x2 = sin(omega_b*t);
% Modulation
modulated_signal = x1 .* cos(omega_I*t) - x2 .* sin(omega_Q*t);
% Demodulation
demodulated_x1 = modulated_signal .* cos(omega_I*t);
demodulated_x2 = -modulated_signal .* sin(omega_Q*t);
% Butterworth lowpass filter design
cutoff_freq = 0.15*pi; % Adjust as needed
order = 4;
[b, a] = butter(order, cutoff_freq);
% Apply filter to regenerate input message signals
filtered_x1 = filter(b, a, demodulated_x1);
filtered_x2 = filter(b, a, demodulated_x2);
% Plot the results
figure;
subplot(1,1,1);
plot(t, x1,'r',t, x2,'g');
title('Original x1[n] and x2[n]');
xlabel('Time');
ylabel('Amplitude');
legend('x1[n]', 'x2[n]');
figure;
subplot(1,1,1);
plot(t, modulated_signal);
title('Modulated Signal');
xlabel('Time');
ylabel('Amplitude');
figure;
subplot(1,1,1);
plot(t, filtered_x1, 'r', t, filtered_x2, 'g');
title('Filtered Demodulated Signals');
xlabel('Time');
ylabel('Amplitude');
legend('Filtered x1[n]', 'Filtered x2[n]');
figure;
subplot(2,1,1);
plot(t, demodulated_x1);
title('demodulated x1');
xlabel('Time');
ylabel('Amplitude');
网友评论