% Lab1intro.m     SOE313 Digital signalbehandling høsten 2004 Faglærer: Terje Natås
% Lab 1b   Signalsekvenser - generering og plotting med MATLAB.
% 
% Graf 1   Digital impuls ( Kronecker) ------------------
N=32;                          % Semikolon undertrykker visning på skjerm 
n=[0:1:N-1];  	    	       % Vektor n får verdier 0 1 2 ..31
impuls=[1 zeros(1,N-1)]; 	   % impuls er et endimensjonalt array som inneholder
                               % en ener etterfulgt av N-1 0-ere 
stem(n,impuls,'fill')		   % Plotting av impuls, fylte "knappenålshoder"
axis([0 32 0 1.2])             % 1.akse fra 0 til 32, 2.akse fra 0 til 1.2  
xlabel('n'),ylabel('Digital impuls') % Påskrift på akser
pause                          % Pause mens graf vises. Graf overføres til utklippstavle 
                               % med Edit/Copy Picture
                               % Fortsett ved å trykke retur  			 
close
%
% Graf 2   "Kontinuerlig" sinussignal ----------
f1=0.5;				          % Signalfrekvens i KHz ( eller Hz )
Tmax=4;                       % Skal plotte en sinus fra 0 til Tmax 
t=linspace(0,Tmax,50);        % Lager x-vektor med 50 punkter 
w1=2*pi*f1;                   % Vinkelfrekvens omega-1  
y=sin(w1*t);                  % Lager y-vektor med 50 punkter 
plot(t,y)                     % Plotter sinusfunksjonen
hold on                       % Holder plottet for å tegne null-linje
                              % Def.linje gjennom punktene 0,0 og Tmax,0
xvektor=[0 Tmax];             % vektor med x-verdier
yvektor=[0 0];                % vektor med y-verdier
plot(xvektor,yvektor,'-')     % Tegner heltrukken linje gjennom punktene 0,0 og Tmax,0
grid on                       % Rutemønster på 
hold off                      %    
pause                         
close

% Graf 3     Samplet sinussignal 
%N=32;		   	    	      % Antall samplinger. Definert før.
%n=[0:1:N-1];  	    	      % Samplingspunkter.  definert før
                              % Flere kommandoer kan stå på samme linje atskilt av komma:
Fs=8;	Ts=1/Fs;			  %Samplingsfrekvens og -periode.  
fase=0;                       % Fasevinkel
SampletSinus=sin(2*pi*n*f1/Fs+fase); 
nTs=Ts*n;                     % Linjevektor for tidsakse  
stem(nTs,SampletSinus,'fill')    % Plotter samplingene 
xlabel('tid   [ms]')          % Tekst på x-aksen
legend('0.5 kHz sinus')       % Forklarende tekst på fig. Flyttes vha mus.
axis([0 4.2 -1.1 +1.1])       % Overstyrer MATLABs forslag til områder
grid on
pause                         % Pause, fortsett ved å trykke en tast
close
%
% Graf 4     Eksponentiell demping	a^nTs  Ts som i sinuseksempelet.
                              % Eksempel på inndata fra tastatur
a=input('Oppgi dempingsfaktor:   ' );  % Oppgi for eksempel .65;
                                       % ( ledende 0 blir ikke registrert )    
% for-setninger kan brukes, men bør unngås pga av tidsforbruk
%for p=1:N                    % NB! første indeks for vektorer/array er 1
%   Eksdemp(p)=0.65^nTs(p);	  % Tildeler verdier til hvert element i vektoren
%end
% Kontruksjonen Eksdemp=a^nTs; går ikke.  Det oppfattes som en skalar som søkes opphøyd i en vektor.
% Følgende virker:
Eksdemp=a*[ones(1,N)];        % Lager vektor med N elementer med verdi a, vha standardfunksjon ones. 
Eksdemp=Eksdemp.^nTs;         % Modifierer de N elementene ved å multiplisere hvert enkelt 
                              % med tilsvarende elementer i vektor nTs.
stem(nTs,Eksdemp,'fill')
xlabel('Tid i ms'),axis([0 4.2 0 1])
legend('a^n^T^s')
pause
close                         % Lukker figurvindu
