next up previous
Next: Translation of a toolbox Up: Matlab to Scilab Translator Previous: Simple function

Simple graphics

Original M-file

function [mag,ph] = fftplot(Y,T)
%  [mag,ph] = fftplot(Y,T)
%  compute and/or plot the magnitude in dB and phase in degrees
%  of the FFT data in Y
%  T = sampling period, if this parameter is not given it is assumed
%      to be equal to one.
%  if called with both output arguments, i.e. / [m,p] = fftplot(Y)
%  the magnitude and phase are returned in m and p respectively
%  and no plot is generated
%  if called with one output argument, i.e.  / m = fftplot(Y)
%  the magnitude of Y in dB is returned and a plot of the magnitude
%  of Y is generated in the range 0 s w s pi
lab = ['DIGITAL FREQUENCY / pi'
       '   FREQUENCY HERTZ    '];
ly = log(Y);
mag = 20 * real(ly) / log(10);
if nargout == 2
                ph = imag(ly);
elseif nargout <= 1
                n = max(size(Y))/2;
                f = (0:n-1)/n;
                if nargin == 2, f = 0.5*f/T; end
                plot(f,mag(1:n)),title('MAGNITUDE'),ylabel('dB'),
                xlabel(lab(nargin,:))
end

Translation and use

mfile2sci fftplot.m
getf fftplot.sci
t=0:0.1:100;                         
y=fft(sin(t)+sin(5*t)+3*sin(3*t),-1);
fftplot(y,1);

\fbox{\epsfig{file=foo0_105.eps,width=3.75in}}



Scilab group