Şimdi Ara

MATLABta SDFT algoritmları !!! YARDIM...

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
1
Cevap
0
Favori
688
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • 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..


    EK – 1 : MATLAB KODU

    % " Hassas, Garantili Kararlı,
    % Kaymalı Ayrık Fourier Dönüşümü"

    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

    %% Başlangıç değerleri
    xmr = 1;
    X0R = 0;
    X0M = 0;
    X0D = 0;
    xn_M= 0;
    fifo= zeros(1,M);

    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.)')









     MATLABta SDFT algoritmları !!! YARDIM...


     MATLABta SDFT algoritmları !!! YARDIM...



    < Bu mesaj bu kişi tarafından değiştirildi erolday -- 23 Ocak 2011; 14:27:28 >







  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.