Bitirme odevi icin gerekli olan SDFT algoritmalarında olusan hataların karsılastirilacagi bir program gerekiyor. Bende programin ilk kısmı mevcut. mSDFT, D&S ve r SDFt algoritmaları tanımlanmis olarak var matlabta ama onemli olan programın yapacagi iterasyonlar sonunda olusucak hataların goruntulenmesi.. En altta da cıktının olması gereken hali var.. YARDIM ederseniz cok makbule gecer..
clear, clc %% DFT parametreleri tanımlamayın M = 30; %DFT uzunlugu k = 3; %Hesaplanacak DFT bin sayısı r = 0.99999; % r <1 için kutup birim çember içine taşınır
W = exp(j*2*pi/M); %Döndürme Faktörü
%% Bir test giriş sinyali oluşturunuz Npts = 206; % Test sinyalini örnek sayısı x = sin(2*pi*k*(0:Npts/2-1)/M).*(0:Npts/2 -1)/Npts; % Rastgele test sinyali x = [x, fliplr(x)]; % Rastgele test sinyali
%x = rand(1,Npts); % Rastgele test sinyali
% Plan giriş sırası figure(1) plot(x, '-bo', 'markersize', 4) title('Giriş Dizisi') xlabel('Zaman') ylabel('Genlik') grid on, zoom on
for n=1:length(x); %% FIFO buffer fifo= [fifo(2:M) x(n)]; %% SDFT r=1 için veya rSDFT r<1için X0R = r*W^(k)*(X0R+x(n)-r^M*xn_M); %(11) SDFT_Out_Mag(n) = abs(X0R); % Çıkış Büyüklüğü SDFT_Out_Phase(n) = atan2(imag(X0R), real(X0R))*180/pi; % Çıktı Fazı
%% mSDFT X1M = X0M+xmr*( x(n)-xn_M ); % Fig.1(d) X0M = X1M; if mod(n,M) xmr=xmr*W^(-k); % Modulasyon Dizisi X1M = X1M*conj(xmr); % Faz Düzeltme else xmr=1; end mSDFT_Out_Mag(n) = abs(X1M); % Çıkış Büyüklüğü mSDFT_Out_Phase(n) = atan2(imag(X1M), real(X1M))*180/pi; % Çıkış Fazı
%% Diğer Algoritma if mod(n,M)==0 X1D = r*W^k*(X0D-xn_M)+ W^k*x(n); %(15) else X1D = W^k*(X0D-r*xn_M+x(n)); %(15) end X0D = X1D; D_and_S_Out_Mag(n) = abs(X1D); % Çıkış Büyüklüğü D_and_S_Out_Phase(n) = atan2(imag(X1D), real(X1D))*180/pi; % Çıkış Fazı
%% Yeni xn_M xn_M = fifo(1); end
figure(2) subplot(2,1,1) plot(SDFT_Out_Mag, '-bo', 'markersize', 8) hold on plot(mSDFT_Out_Mag, '-kd', 'markersize', 6) plot(D_and_S_Out_Mag, '-r*', 'markersize', 4) hold off legend('SDFT', 'mSDFT', 'D & S') title(['DFT Sonuçları : (M = ',num2str(M),', k = ',num2str(k),')']) xlabel('Zaman') ylabel('Mag (Lin.)') grid on, zoom on
subplot(2,1,2) plot(SDFT_Out_Phase, '-bo', 'markersize', 8) hold on plot(mSDFT_Out_Phase, '-kd', 'markersize', 6) plot(D_and_S_Out_Phase, '-r*', 'markersize', 4) hold off grid on, zoom on xlabel('Zaman') ylabel('Faz (Deg.)')