Advertisement
tsounakis

MATLAB SIGNALS

Apr 29th, 2021
1,046
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 2.45 KB | None | 0 0
  1. [x1, rate] = audioread("x1.wav");
  2.  
  3. x2 = firstPart(x1, rate, 1500);
  4. x3 = secondPart(x2, rate);
  5. x4 = thirdPart(x3, rate);
  6. x5 = lastPart(x4, rate, 1500);
  7.  
  8. function filteredSignal = lastPart (signal, rate, cut)
  9.     f = (-length(signal)/2 : length(signal)/2 -1)*rate/length(signal);
  10.     fourierSignal = fftshift(fft(signal));
  11.    
  12.     H = 1 - heaviside(f - cut) - heaviside(- f - cut);
  13.     filteredFourierSignal = fftshift(H .* fourierSignal);
  14.    
  15.     figure
  16.     filteredSignal = ifft(filteredFourierSignal);
  17.     plotTime(filteredSignal, rate, 'Time Domain, Demodulated & Filtered Audio (Lowpass 1.5 KHz)');  
  18.    
  19.     audiowrite('x5.wav', filteredSignal, rate);
  20. end
  21.  
  22. function demodulatedSignal = thirdPart (signal, rate)
  23.     t = linspace(0, length(signal)/rate, length(signal));
  24.    
  25.     cosine = cos(2*pi*5000*t);
  26.     demodulatedSignal = signal .* cosine;
  27.     figure
  28.     plotTime(demodulatedSignal, rate, 'Demodulated Signal');
  29.    
  30.     audiowrite('x4.wav', demodulatedSignal, rate);
  31. end
  32.  
  33. function modSignal = secondPart (signal, rate)
  34.     t = linspace(0, length(signal)/rate, length(signal));
  35.  
  36.     cosine = cos(2*pi*5000*t);
  37.     modSignal = signal .* cosine;
  38.     figure
  39.     plotTime(modSignal, rate, 'Modulated Signal');
  40.    
  41.     audiowrite('x3.wav', modSignal, rate);
  42. end
  43.  
  44. function filteredSignal = firstPart (signal, rate, cut)
  45.     figure
  46.     plotTime(signal, rate, 'Time Domain, Unfiltered Audio');
  47.  
  48.     figure
  49.     f = (-length(signal)/2 : length(signal)/2 -1)*rate/length(signal);    
  50.     fourierSignal = fftshift(fft(signal));
  51.     plotFreq(fourierSignal, f, 'Frequency Domain, Unfiltered Audio');
  52.  
  53.     figure
  54.     H = 1 - heaviside(f - cut) - heaviside(- f - cut);
  55.     filteredFourierSignal = H .* fourierSignal';
  56.     plotFreq(filteredFourierSignal, f, 'Freq Domain, Filtered Audio (Lowpass 1.5 KHz)');
  57.     filteredFourierSignal = fftshift(filteredFourierSignal);
  58.    
  59.     figure
  60.     filteredSignal = ifft(filteredFourierSignal);
  61.     plotTime(filteredSignal, rate, 'Time Domain, Filtered Audio (Lowpass 1.5 KHz)');
  62.    
  63.     audiowrite('x2.wav', filteredSignal, rate);
  64. end
  65.  
  66. function [] = plotFreq (data, f, ntitle)
  67.     plot(f, abs(data));
  68.     grid on;
  69.     xlabel('Frequency [Hz]');
  70.     ylabel('Magnitude');
  71.     title(ntitle);
  72. end
  73.  
  74. function [] = plotTime (data, Fs, ntitle)
  75.     t = linspace(0, length(data)/Fs, length(data));
  76.     plot(t, data);
  77.     grid on;
  78.     xlabel('Time (sec)');
  79.     ylabel('Amplitude');
  80.     title(ntitle);
  81. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement