% ulaz - Ulazna funkcija koja testira funkciju codesign za dizajn CMFB na
%        razne pobude
%
% Poziva se:
%   [N] = ulaz(M,Aa,ro,izbor1,izbor2);
%
% gdje je:
%   M      - broj kanala (pojaseva; filtarska banka)
%   Aa     - atenuacija u pojasu gusenja (stopband attenuation) - unijeti
%            sa pozitivnim predznakom
%   ro     - parametar dizajna; roll-off faktor - pokazuje preklapanje izmedu 
%            pojaseva filtara
%   izbor1 - parametar za odabir ulaznog signala. Ulazni signal je ugraðen
%            u funkciji, samo ga treba odabrati
%            
%   izbor2 - pametar za odabir racunanja rekonstruiranog signala - unijeti 1 
%            za rekonstrukciju sa decimacijom i interpolacijom i 2 za
%            rekonstrukciju bez decimacije i interpolacije
%
%
% Primjer poziva:
%   clear all
%   M = 30;
%   Aa = 100;
%   ro = 1.1;
%   izbor1 = 4;
%   izbor2 = 2;
%   N = ulaz(M,Aa,ro,izbor1,izbor2)

function N = ulaz(M,Aa,ro,izbor1,izbor2)

if ((Aa < 50) | (Aa > 150))
    fprintf('error: Aa mora biti u intervalu [50,150]');
    return;
end

% definiran prvi pobudni signal
signal = zeros(1,1024);
signal(1:100) = -((1:100)-50).*((1:100)-50)/500+5;
signal(101:200) = 3;
signal(201:300) = 2;
signal(301:500) = (301:500)/250+1;
signal(501:700) = (500:-1:301)/250+1;
signal(801:900) = 1;
signal(901:1000) = -((1:100)-50).*((1:100)-50)/1000+3.5;
x1 = signal*4;

% definiran drugi pobudni signal
t = linspace(-20,20,40);
x2 = 5*sin(2*pi*t);

% definiran treci pobudni signal
C = 1024;
x3 = randn(1,C);

% definiran cetvrti pobudni signal
% kvant diskretizacije vremena
T = 1/64;

% signal
t0 = 4;
t = [-t0:T:t0-T];
x = zeros(size(t));
i = find((t < 1)& (t >= 0));
x(i)=sin(2*pi*t(i));
x(i)=x(i) + sin(2*pi*t(i)*3)/3;
x(i)=x(i) + sin(2*pi*t(i)*5)/5;
x4 = x;

if (izbor1 == 1)
	pobuda = x1;
elseif (izbor1 == 2)
	pobuda = x2;
elseif (izbor1 == 3)
	pobuda = x3;
elseif (izbor1 == 4)
	[yf, fs] = wavread('mojGlas');
	yf = yf(1:4:length(yf),1); % drugacije uzorkovanje
	fsnew = fs/4;
	wavplay(yf, fsnew);
   figure(1), plot(yf);
	% dalje taj signal ide kroz filtarsku banku
	[hp,xr,N] = codesign(M,Aa,ro,yf,izbor1,izbor2)
	if (izbor2 == 1)
		wavplay(xr*100, fs/4);
	else
		wavplay(xr, fs/4);
	end
	figure(2), plot(xr*100,'m');

else
	pobuda = x4;
	figure, plot(t, x4), xlabel('sekundi'), grid on;
end

% poziv funkcije za dizajn CMFB
if ((izbor1 == 3) | (izbor1 == 4))
	return;
else	
	[hp,xr,N] = codesign(M,Aa,ro,pobuda,izbor1,izbor2)
	
	x = pobuda;
	figure(4)
	subplot(2,1,1); plot(x), grid;
	title('Ulazni signal');
	subplot(2,1,2); plot(xr), grid;
	title('Rekonstruirani signal');
	
	figure(5)
	[H,w] = freqz(hp,1,3000);
	plot(w/pi,20*log10(H)), grid on;
	axis([0 1 -180 10]), title('Amplitudna karakteristika od |Hp(e^{j*omega})| (u dB)');
	
	%figure(6)
	%plot(w/pi,20*log10(H)), grid on;
	%axis([0 0.2 -180 10]), title('Uvecana amplitudna karakteristika od |Hp(e^{j*omega})| (u dB)');
	
end