iircomb_parse_args(funname, argv)
{
local j, val, fs, f0, Q, Ab, unity_dc;
fs = f0 = Q = Ab = unity_dc = {};
loop (j = 1..(argc - 1))
{
val = getargv(j);
if (isscalar(val))
{
if (isempty(fs))
{
fs = val;
}
else if (isempty(f0))
{
f0 = val;
}
else if (isempty(Q))
{
Q = val;
}
else if (isempty(Ab))
{
Ab = val;
}
else if (isempty(unity_dc))
{
unity_dc = val;
}
}
else if (isstring(val))
{
if (tolower(val) == "unity_dc")
{
unity_dc = 1;
}
else if (tolower(val) == "non_unity_dc")
{
unity_dc = 0;
}
else
{
error(sprintf("%s - unknown option '%s'", funname, val));
}
}
else if (isarray(val) && isempty(f0))
{
f0 = val;
}
else
{
error(sprintf("%s - invalid input", funname));
}
}
if (isempty(fs))
{
fs = 1.0;
}
if (isempty(f0))
{
f0 = 0.25 * fs;
}
if (isempty(Q))
{
Q = 10;
}
if (isempty(Ab))
{
/* -3 db */
Ab = 10 * log10(0.5);
}
if (isempty(unity_dc))
{
unity_dc = 0;
}
return(fs, f0, Q, Ab, unity_dc);
}