Witam
Wklepałem sobie program to Matlaba z książki Zielińskiego "CPS od teorii do zastosowań". Wygląda on tak:
No i niby wszystko działa jak należy. Problem się zaczyna gdy wstawię większą liczbępróbek np. N = 128. W linii
xgora = x(g);
wyskakuje mio bład że g jest za duze (tzn wieksze niz maksymalny x czyli 127). No i jak sobie wszystko w głowie popodliczam to rzeczywiscie tak jest. Tylko nie mam pojecia co zrobic zeby tego bledu uniknac :/.
Czemu ten algorytm działa tylko dla N<=8?
W załączniku znajduje sie caly plik z matlaba. W tym momencie mam ustawione N = 64 więc wyskoczy blad po odpaleniu pliku 'radix.m'
Wklepałem sobie program to Matlaba z książki Zielińskiego "CPS od teorii do zastosowań". Wygląda on tak:
%GENERACJA SYGNAŁU
N=8; %liczba próbek sygnału
x=0:N-1; %przykładowe wartości próbek
typBitReverse=1;
typFFT=1;
%PRZESTAWIENIE KOLEJNOŚCI PRÓBEK: wersja 1-wolna
...........
%WŁAŚCIWE FFT - wersja 1 - wolniejsza
if (typFFT==1)
for e=1:log2(N)
SM = 2^(e-1);
LB = N/(2^e);
LMB = 2^(e-1);
OMB = 2^e;
W = exp(-j*2*pi/2^e);
for b = 1 : LB
for m = 1 : LMB
g = (b-1)*OMB + m;
d = g + SM;
xgora = x(g);
xdol = x(d)*W^(m-1);
x(g) = xgora + xdol;
x(d) = xgora - xdol;
end
end
end
end No i niby wszystko działa jak należy. Problem się zaczyna gdy wstawię większą liczbępróbek np. N = 128. W linii
xgora = x(g);
wyskakuje mio bład że g jest za duze (tzn wieksze niz maksymalny x czyli 127). No i jak sobie wszystko w głowie popodliczam to rzeczywiscie tak jest. Tylko nie mam pojecia co zrobic zeby tego bledu uniknac :/.
Czemu ten algorytm działa tylko dla N<=8?
W załączniku znajduje sie caly plik z matlaba. W tym momencie mam ustawione N = 64 więc wyskoczy blad po odpaleniu pliku 'radix.m'