% Toto je funkcia na kreslenie spektier signalov
% 
% Verzia 1.0 na prvy pokus 9. 6. 2008 R.B.

function y = spektrum (Signal, T_sample)


%  Signal je vstupny vektor, ktory chceme analyzovat
%  T_sample je perioda vzorkovania. V dalsej verzii ak ju
%  nezadame, bude default 1s.
% 

% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %
% S nacitanymi datami robime zakladnu statistiku:     %
%                                                     %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %

  puts(' Pocet vzoriek: ');
  N = length(Signal) 

  puts(' Mean:          ');
  E = mean(Signal)

  puts(' Median:        ');
  m = median(Signal)

  puts(' Std:           ');
  s = std(Signal)
 


% Priprava na fft - pripravime si osi
%
  puts(' Time:    ');
  maxtime = (N-1) * T_sample     % Doba trvania signalu

  time = (0:N-1)*T_sample;       % Casova osa
  freq = (0:N-1)/maxtime;        % Kmitoctova osa
 
 
 % Fourierova analyza:

 S = fft(Signal);               % Vypocet komplexneho spektra
 Mod = 2/N * abs(S);            % Spravne amplitudove spektrum
 Pha = 180/pi * angle(S);       % Fazove spektrum v stupnoch
 
 N1 = round(N/2);

 subplot(2,1,1);
 plot(freq(1:N1),Mod(1:N1));       % Aplitudova frekvencna charakteristika
 
 subplot(2,1,2);
 plot(freq(1:N1),Pha(1:N1));       % Fazova frekvencna charakteristika
 
% plot(freq(1:N1),Mod(1:N1))
 
% plot(freq(1:N1),Pha(1:N1))
%
%% stem(f,Mod(:,1))               % Nakreslime graf
%
%% Takto kreslime grafy, 
%%plot (time, data)
%%plot (freq, Mod)
%%plot (freq, Pha)
%
% ale spektrum je symetricke, takze by sme mali pouzit
% kreslenie len do polovice vzorkovacieho kmitoctu
% Skuste vykreslit cele (je symetricke) 
% Skuste vykreslit este viac (je periodicke)
% 
 

%
% Nasleduju dema, skvele je, ze mozu volat tuto istu funkciu...
% 
# demos
%!demo
%! % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %
%! %                                                             %
%! % Takto sa kresli spektrum signalu typu Sinus s f 440 Hz.     %
%! %                                                             %
%! % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %
%!
%!    f_sample = 8000;               % [Hz] - pre telefony OK
%!    duration =    1;               % [s]  - jedna sekunda
%!        freq =  440;               % [Hz] - komorne A4 = 440 Hz
%!           A =  0.9;               % [V]  - amplituda signalu z <-1,1>
%!
%!        time = 0 : (1/f_sample) : duration;
%! SinusSignal = A * sin( 2*pi*freq*time + 0 );
%!
%!    T_sample = 1/f_sample;
%!           N = length(SinusSignal);
%!   
%!  maxtime = (N-1) * T_sample;      % Doba trvania signalu
%!
%!  time = (0:N-1) * T_sample;       % Casova osa
%!  freq = (0:N-1) / maxtime;        % Kmitoctova osa
%! 
%! 
%! % Fourierova analyza:
%!
%! S = fft(SinusSignal);             % Vypocet komplexneho spektra
%! Mod = 2/N * abs(S);               % Spravne amplitudove spektrum
%! Pha = 180/pi * angle(S);          % Fazove spektrum v stupnoch
%! 
%! N1 = round(N/2);                  % Kreslime len relevantu cast po f_sample/2
%! 
%! subplot(2,1,1);
%! plot(freq(1:N1),Mod(1:N1));       % Aplitudova frekvencna charakteristika
%! 
%! subplot(2,1,2);
%! plot(freq(1:N1),Pha(1:N1));       % Fazova frekvencna charakteristika
%! 
%!demo
%! % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %
%! %                                                             %
%! % Takto vyzera spektrum signalu z troch Sinusov:              %
%! %                                                             %
%! % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %
%!
%!    f_sample = 8000;              % [Hz] - telefonna kvalita
%!    duration =    1;              % [s]  - jedna sekunda
%! 
%!        time = 0 : (1/f_sample) : duration;
%!
%!        A4   = 0.5 * sin(2*pi*440.00*time);
%!        Cis5 = 0.3 * sin(2*pi*554.37*time);
%!        E5   = 0.2 * sin(2*pi*659.26*time);
%!        Tone = A4 + Cis5 + E5;            
%!
%!    T_sample = 1/f_sample;
%!
%!    spektrum(Tone,T_sample);
%!
%!demo
%! % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %
%! %                                                             %
%! % Takto vyzera spektrum sumu                                  %
%! %                                                             %
%! % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %
%!
%! NoiseSignal = 0 + 0.6 * randn([8*1024 1]); % \mu = 0, \sigma = 0.6
%!
%! spektrum(NoiseSignal,1/8000);
%!
%!demo
%! % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %
%! %                                                             %
%! % Takto vyzera spektrum impulzu                               %
%! %                                                             %
%! % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %
%!
%!
%! PulseSignal = zeros(8000,1); PulseSignal(5)=1;
%!
%! spektrum(PulseSignal,1/8000);
%!
%!demo
%! % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %
%! %                                                             %
%! % Takto vyzera spektrum obdlznikoveho signalu                 %
%! %                                                             %
%! % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %
%!
%!     f_sample = 8000;               % [Hz] - pre telefony OK
%!     duration =    1;               % [s]  - jedna sekunda
%!         freq =  440;               % [Hz] - komorne A4 = 440 Hz
%!            A =  0.9;               % [V]  - amplituda signalu z <-1,1>
%!
%!         time = 0 : (1/f_sample) : duration;
%! SquareSignal = A * square( 2*pi*freq*time + 0 );
%!
%!    T_sample = 1/f_sample;
%!
%! spektrum(SquareSignal,T_sample);
%!
%!
