# CommProj_Trial_1.01

unknown
matlab
6 months ago
3.6 kB
2
Indexable
Never
```% C O M M   P R O J E C T   2 0 2 3

%-------------------------------- T h e   S i g n a l s -----------------------

%Note that they all have the same sampling frequency of 44100 Hz

%Adjusting lengths to be able to generalize the next operations
max_length = length(raw_audio_1); %longest audio is the first one
raw_audio_2(max_length, 1) = 0; raw_audio_2(max_length, 2) = 0; %padding short audios with zeros
raw_audio_3(max_length, 1) = 0; raw_audio_3(max_length, 2) = 0;
raw_audio_4(max_length, 1) = 0; raw_audio_4(max_length, 2) = 0;
raw_audio_5(max_length, 1) = 0; raw_audio_5(max_length, 2) = 0;

%Creating array of audios to better automate next operations
raw_audio = [raw_audio_1, raw_audio_2, raw_audio_3, raw_audio_4, raw_audio_5];

%Stereo to mono conversion
raw_audio_mono = zeros(max_length, 5);
for n = 1:5
stereo_audio = [raw_audio(:, 2*n-1),raw_audio(:, 2*n)];
raw_audio_mono(:, n) = stereo2mono(stereo_audio);
end

%Computing and plotting the fast Fourier transform
for n = 1:5
fourier_transform(raw_audio_mono(:, n), max_length, Fs1);
end

%------------------------------ T h e   A M   M o d u l a t o r -----------------------

%Increasing sampling frequency by 16 times to be able to do FDM with fc = 100 kHz
Fs_x16 = Fs1 * 16;
length_x16 = max_length * 16;
mono_audio_sampled_x16 = zeros(length_x16, 5);
for n = 1:5
mono_audio_sampled_x16(:, n) = interp(raw_audio_mono(:, n), 16);
end

%DSB-SC AM
t = 1/Fs_x16:1/Fs_x16:length_x16/Fs_x16;
mono_audio_modulated = zeros(length_x16, 5);
for n = 1:5
fc = 1e5 + (n-1) * 55e3;
carrier = cos(2*pi*t*fc)';
message = mono_audio_sampled_x16(:, n);
mono_audio_modulated(:, n) = carrier.*message;
end

%Computing and plotting the fast Fourier transform
for n = 1:5
fourier_transform(mono_audio_modulated(:, n), length_x16, Fs_x16);
end

%Constructing the message
transmitted_message = zeros(length_x16, 1);
for n = 1:5
transmitted_message = transmitted_message + mono_audio_modulated(:, n);
end

%Computing and plotting the fast Fourier transform
fourier_transform(transmitted_message, length_x16, Fs_x16);

%-----------------------------   F u n c t i o n s  ------------------------------

%Function to create single channel audio (stereo to mono conversion)
function audio_mono = stereo2mono(audio_stereo)
left_channel = audio_stereo(:, 1);
right_channel = audio_stereo(:, 2);
audio_mono = left_channel + right_channel;
end

%Function to compute and plot Fourier transform of x signal with Fsx sampling frequency and Nx samples
function fourier_transform (x, Nx, Fsx)
x_fft = fft(x);
x_fft_shifted = fftshift(x_fft);  % shifting the zero frequency component to the center
magnitude_spectrum = abs(x_fft_shifted) / Nx;  %normalizing by the number of samples
frequency_shifted = linspace(-Fsx/2, Fsx/2, Nx); %editing the frequency axis
figure;
plot(frequency_shifted, magnitude_spectrum);
title('Fast Fourier Transform');
xlabel('Frequency (Hz)');
ylabel('Magnitude');
grid on;
end```