Code: Select all
fft
Code: Select all
ifft
Code: Select all
fft
Code: Select all
ifft
Code: Select all
% vsota dveh signalov istih amplitud (akord)
% vnaprej pripravljeno
function fft01a()
f1=10;
f2=15;
tmax=1.0;
fs=1000;
tt=0:1/fs:(tmax-1/fs);
ss=akordvol([f1,f2],[1,0.5],tmax,fs);
plot(tt,ss,"linewidth",3);grid;
pause(1);
fftss=fft(ss);
ff=0:1/tmax:(fs-1/tmax);
nmax=round(tmax*fs);
plot(ff(1:nmax),abs(fftss(1:nmax)),"linewidth",3);grid;
pause(1);
fftss=fft(ss);
nmax=4*round(f2);
plot(ff(1:nmax),abs(fftss(1:nmax)),"linewidth",3);grid;
pause(1);
end
Code: Select all
% vsota dveh signalov poljubnih amplitud (akord)
% parametri na izbiro
% predlog: ft01b(10,15,1,0.8,1,fs), kjer fs od 100 od 10000
% (probaj tudi 40, kjer je hud aliasing)
function fft01b(f1,f2,v1,v2,tmax,fs)
tt=0:1/fs:(tmax-1/fs);
ss=akordvol([f1,f2],[v1,v2],tmax,fs);
plot(tt,ss,"linewidth",3);grid;
pause(2);
fftss=fft(ss);
ff=0:1/tmax:(fs-1/tmax);
nmax=round(tmax*fs);
plot(ff(1:nmax),abs(fftss(1:nmax)),"linewidth",3);grid;
pause(2);
nmax=2.5*max([f1,f2]);
plot(ff(1:nmax),abs(fftss(1:nmax)),"linewidth",3);grid;
pause(2);
end
Code: Select all
% vsota ve"c signalov poljubnih amplitud
% parametri na izbiro (glej ffto1b.m)
function fft01c(ffin,vv,tmax,fs)
tspause=2.0;
tt=0:1/fs:(tmax-1/fs);
ss=akordvol(ffin,vv,tmax,fs);
plot(tt,ss,"linewidth",3);grid;
pause(tspause);
fftss=fft(ss);
ff=0:1/tmax:(fs-1/tmax);
nmax=round(tmax*fs);
plot(ff(1:nmax),abs(fftss(1:nmax)),"linewidth",3);grid;
pause(tspause);% vsota ve"c signalov poljubnih amplitud
% parametri na izbiro (glej ffto1b.m)
function fft01c(ffin,vv,tmax,fs)
tspause=2.0;
tt=0:1/fs:(tmax-1/fs);
ss=akordvol(ffin,vv,tmax,fs);
plot(tt,ss,"linewidth",3);grid;
pause(tspause);
fftss=fft(ss);
ff=0:1/tmax:(fs-1/tmax);
nmax=round(tmax*fs);
plot(ff(1:nmax),abs(fftss(1:nmax)),"linewidth",3);grid;
pause(tspause);% vsota ve"c signalov poljubnih amplitud
% parametri na izbiro (glej ffto1b.m)
function fft01c(ffin,vv,tmax,fs)
tspause=2.0;
tt=0:1/fs:(tmax-1/fs);
ss=akordvol(ffin,vv,tmax,fs);
plot(tt,ss,"linewidth",3);grid;
pause(tspause);
fftss=fft(ss);
ff=0:1/tmax:(fs-1/tmax);
nmax=round(tmax*fs);
plot(ff(1:nmax),abs(fftss(1:nmax)),"linewidth",3);grid;
pause(tspause);
nmax=floor(1.2*max(ffin));
plot(ff(1:nmax),abs(fftss(1:nmax)),"linewidth",3);grid;
pause(tspause);
end
nmax=floor(1.2*max(ffin));
plot(ff(1:nmax),abs(fftss(1:nmax)),"linewidth",3);grid;
pause(tspause);
end
nmax=floor(1.2*max(ffin));
plot(ff(1:nmax),abs(fftss(1:nmax)),"linewidth",3);grid;
pause(tspause);
end
Code: Select all
function [yy]=tonvol(f,v,ts,fs)
tt=0:1/fs:(ts-1/fs);
yy=v.*sin(2*pi*f*tt);
end
Code: Select all
function [aa]=akordvol(ff,vv,ts,fs)
n=length(ff);
bb=[];
for i=1:n
bb=[bb;tonvol(ff(i),vv(i),ts,fs)];
end
aa=mean(bb);
end
Code: Select all
function [aa]=sigprod(ff,vv,ts,fs)
n=length(ff);
aa=tonvol(ff(1),vv(1),ts,fs);
for i=2:n
bb=tonvol(ff(i),vv(i),ts,fs);
aa=aa.*bb;
end
end
Code: Select all
% produkt dveh signalov poljubnih amplitud (akord)
% parametri na izbiro
function fft02a(f1,f2,v1,v2,tmax,fs)
tt=0:1/fs:(tmax-1/fs);
ss=sigprod([f1,f2],[v1,v2],tmax,fs);
plot(tt,ss,"linewidth",3);grid;
pause(2);
fftss=fft(ss);
ff=0:1/tmax:(fs-1/tmax);
nmax=round(tmax*fs);
plot(ff(1:nmax),abs(fftss(1:nmax)),"linewidth",3);grid;
pause(2);
nmax=round(3.2*(f1+f2));
plot(ff(1:nmax),abs(fftss(1:nmax)),"linewidth",3);grid;
pause(2);
end
Code: Select all
% produkt ve"cih signalov poljubnih amplitud (akord)
% parametri na izbiro
function fft02b(ffin,vv,tmax,fs)
tt=0:1/fs:(tmax-1/fs);
ss=sigprod(ffin,vv,tmax,fs);
plot(tt,ss,"linewidth",3);grid;
pause(2);
fftss=fft(ss);
ff=0:1/tmax:(fs-1/tmax);
nmax=round(tmax*fs);
plot(ff(1:nmax),abs(fftss(1:nmax)),"linewidth",3);grid;
pause(2);
nmax=round(2.2*sum(ffin));
plot(ff(1:nmax),abs(fftss(1:nmax)),"linewidth",3);grid;
pause(2);
end
Code: Select all
% od signala do spektra in nazaj: FFT in IFFT
% vsota ve"c signalov poljubnih amplitud
% parametri na izbiro (glej ffto1b.m)
function fft03a(ffin,vv,tmax,fs)
tspause=2.0;
tt=0:1/fs:(tmax-1/fs);
ss=akordvol(ffin,vv,tmax,fs);
plot(tt,ss,"linewidth",3);grid;
pause(tspause);
fftss=fft(ss);
% length(fftss)
ff=0:1/tmax:(fs-1/tmax);
nmax=round(0.5*tmax*fs);
plot(ff(1:nmax+1),abs(fftss(1:nmax+1)),"linewidth",3);grid;
pause(tspause);
ifftss=ifft(fftss);
plot(tt,ifftss,"linewidth",3);grid;
pause(tspause);
end