يغل
يغل
clear;
% Load Signal
load handel.mat;
n = length(y);
fc1_bpf = 500;
fc2_bpf = 3000;
t = (0:n-1)/Fs;
f = (-n/2:n/2-1)*(Fs/n);
% Filter Application
y_filt = filter(b1, a1, y);
subplot(2, 1, 2);
plot(f, abs(y_fft));
title('Original Signal (Frequency Domain)');
xlabel('Frequency (Hz)');
ylabel('Magnitude');
subplot(2, 1, 2);
plot(f, abs(y_filt_fft));
title('Filtered Signal (Frequency Domain)');
xlabel('Frequency (Hz)');
ylabel('Magnitude');
subplot(2, 1, 2);
quantized_fft = fft(y_quantized);
quantized_fft = fftshift(quantized_fft);
f_quantized =
(-length(quantized_fft)/2:length(quantized_fft)/2-1)*(Fs/len
gth(quantized_fft)); % Frequency vector for quantized signal
plot(f_quantized, abs(quantized_fft));
title('Quantized Signal (Frequency Domain)');
xlabel('Frequency (Hz)');
ylabel('Magnitude');
subplot(2, 1, 2);
ask_signal_fft = fft(ask_signal);
ask_signal_fft = fftshift(ask_signal_fft);
f_ask_signal =
(-length(ask_signal_fft)/2:length(ask_signal_fft)/2-
1)*(Fs_mod/length(ask_signal_fft)); % Frequency vector for
ASK signal
plot(f_ask_signal, abs(ask_signal_fft));
title('ASK Signal (Frequency Domain)');
xlabel('Frequency (Hz)');
ylabel('Magnitude');
subplot(2, 1, 2);
noisy_signal_fft = fft(noisy_signal);
noisy_signal_fft = fftshift(noisy_signal_fft);
f_noisy_signal =
(-length(noisy_signal_fft)/2:length(noisy_signal_fft)/2-
1)*(Fs_mod/length(noisy_signal_fft)); % Frequency vector for
noisy signal
plot(f_noisy_signal, abs(noisy_signal_fft));
title('Noisy ASK Signal (Frequency Domain)');
xlabel('Frequency (Hz)');
ylabel('Magnitude');
subplot(2, 1, 2);
decoded_signal_fft = fft(decoded_signal);
decoded_signal_fft = fftshift(decoded_signal_fft);
f_decoded_signal =
(-length(decoded_signal_fft)/2:length(decoded_signal_fft)/2-
1)*(Fs/length(decoded_signal_fft)); % Frequency vector for
decoded signal
plot(f_decoded_signal, abs(decoded_signal_fft));
title('Decoded Signal (Frequency Domain)');
xlabel('Frequency (Hz)');
ylabel('Magnitude');
% Calculate BER
BER = num_errors / length(transmitted_binary_stream);
% Display BER
disp(['Bit Error Rate (BER): ', num2str(BER)]);