]> Creatis software - CreaPhase.git/blob - octave_packages/signal-1.1.3/freqs.m
Add a useful package (from Source forge) for octave
[CreaPhase.git] / octave_packages / signal-1.1.3 / freqs.m
1 ## Copyright (C) 2003 Julius O. Smith III <jos@ccrma.stanford.edu>
2 ##
3 ## This program is free software; you can redistribute it and/or modify it under
4 ## the terms of the GNU General Public License as published by the Free Software
5 ## Foundation; either version 3 of the License, or (at your option) any later
6 ## version.
7 ##
8 ## This program is distributed in the hope that it will be useful, but WITHOUT
9 ## ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
10 ## FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
11 ## details.
12 ##
13 ## You should have received a copy of the GNU General Public License along with
14 ## this program; if not, see <http://www.gnu.org/licenses/>.
15
16 ## Usage: H = freqs(B,A,W);
17 ##
18 ## Compute the s-plane frequency response of the IIR filter B(s)/A(s) as 
19 ## H = polyval(B,j*W)./polyval(A,j*W).  If called with no output
20 ## argument, a plot of magnitude and phase are displayed.
21 ##
22 ## Example:
23 ##    B = [1 2]; A = [1 1];
24 ##    w = linspace(0,4,128);
25 ##    freqs(B,A,w);
26
27 function [H] = freqs(B,A,W)
28
29   if (nargin ~= 3 || nargout>1)
30     print_usage;
31   end
32
33   H = polyval(B,j*W)./polyval(A,j*W);
34
35   if nargout<1
36     freqs_plot(W,H);
37   end
38
39 endfunction
40
41 %!demo
42 %! B = [1 2];
43 %! A = [1 1];
44 %! w = linspace(0,4,128);
45 %! freqs(B,A,w);