minor changes

This commit is contained in:
Imants Pulkstenis
2019-12-27 13:17:42 +02:00
parent 6a422ee888
commit 1a2289d877
2 changed files with 34 additions and 15 deletions
+30 -12
View File
@@ -2,23 +2,23 @@
clear; % clears all previus values from memory clear; % clears all previus values from memory
clc; % clear command window clc; % clear command window
fs = 44100; % samplinf freq. fs = 44100; % samplinf freq.
fftLength=16; % windowlength fftLength=32; % windowlength
% signal frequencies % signal frequencies
max = 2048 - 1 ; max = 2048 - 1 ; % max aplitude
f1 = 430; f1 = 1000;
a1 = 0; a1 = max/5;
f2 = 4300; f2 = 0;
a2 = 0; a2 = max/4;
f3 = 8000; f3 = 9600;
a3 = max/2; a3 = max/2;
% calculating signals % calculating signals
comp1 = a1 * sin(2*pi*f1*[0:1/fs:1]); comp1 = a1 * cos(2*pi*f1*[0:1/fs:1]);
comp2 = a2 * sin(2*pi*f2*[0:1/fs:1]); comp2 = a2 * cos(2*pi*f2*[0:1/fs:1]);
comp3 = a3 * sin(2*pi*f3*[0:1/fs:1]); comp3 = a3 * cos(2*pi*f3*[0:1/fs:1]);
% calculatin vector values for step function % calculatin vector values for step function
d1 = ones(1, 24); d1 = ones(1, 24);
@@ -151,15 +151,33 @@ for i = 1 : 2^4 : fftLength
end end
end end
%% 5th stage
% Calculating W twiddling factor
for i = 1 : 16
Wn(i) = exp(-j * (i-1) * 2 * pi/ 32 );
end
% calculate next stage values
for i = 1 : 2^5 : fftLength
for k = 0 : 15
% Even pair
stage(6,i+k) = stage(5,i+k) + Wn(k+1)*stage(5,i+k+16);
% Odd par
stage(6,i+k+16) = stage(5,i+k) - Wn(k+1)*stage(5,i+k+16);
end
end
%% Ploting out %% Ploting out
% slowly plot result % slowly plot result
figure(5) figure(5)
for i = 1 : bits +1 for i = 1 : bits +1
%plot( abs( real_n(i, :) + j.*imag_n(i, :) ) ); %plot( abs( real_n(i, :) + j.*imag_n(i, :) ) );
plot( abs( stage(i,:) ) ); plot( abs( stage(i,1:fftLength/2) ) );
pause(1); pause(1);
end end
xt = xticks; % returns the current x-axis tick values as a vector xt = xticks; % returns the current x-axis tick values as a vector
fstep = fs/fftLength; % tick of f axis in f domain fstep = fs/fftLength; % tick of f axis in f domain
xtnew = round(xt*fstep)/1000 ; % calculate new tick in kHz xtnew = round((xt-1)*fstep/1000, 1) ; % calculate new tick in kHz
xticklabels(xtnew) % set new tick labels xticklabels(xtnew) % set new tick labels
+4 -3
View File
@@ -68,9 +68,10 @@ title('Linear Magnitude FFT')
ylabel('magnitude'), xlabel('kHz') ylabel('magnitude'), xlabel('kHz')
figure(4) % plots resultinf fft(in dB) from Matlab functions figure(4) % plots resultinf fft(in dB) from Matlab functions
ft = fft(data,fftLength+1); ft = fft(data,fftLength);
ftMag = abs(ft(1:fftLength+1)); ft1 = fftshift(ft);
plot (freq3,20*log10(ftMag)), grid minor, ftMag = abs(ft1(1:fftLength));
plot (fax_kHz,20*log10(ftMag)), grid minor,
title('dB Magnitude') title('dB Magnitude')
ylabel('dB'), xlabel('kHz') ylabel('dB'), xlabel('kHz')