private void removeZero(Cdouble zero) { _zeros.remove(zero); if (!zero.isReal()) _zeros.remove(zero.conj()); _pzp.updateZerosView(); _rp.updateViews(); }
private void removePole(Cdouble pole) { _poles.remove(pole); if (!pole.isReal()) _poles.remove(pole.conj()); _pzp.updatePolesView(); _rp.updateViews(); }
private void addPole(Cdouble pole) { _poles.add(new Cdouble(pole)); if (!pole.isReal()) _poles.add(pole.conj()); _pzp.updatePolesView(); _rp.updateViews(); }
private void addZero(Cdouble zero) { _zeros.add(new Cdouble(zero)); if (!zero.isReal()) _zeros.add(zero.conj()); _pzp.updateZerosView(); _rp.updateViews(); }
/** * Sorts array of poles or zeros. After sorting, any complex conjugate * pairs are first in the array, followed by any real poles or zeros. * Also ensures that any complex poles or zeros have conjugate mates. * @return array of sorted poles or zeros. */ private static Cdouble[] sort(Cdouble[] c) { int n = c.length; Cdouble[] cs = new Cdouble[n]; int ns = 0; for (int i=0; i<n; ++i) { if (!c[i].isReal()) { Cdouble cc = c[i].conj(); int j = 0; while (j<n && !cc.equals(c[j])) ++j; Check.argument(j<n,"complex "+c[i]+" has a conjugate mate"); if (i<j) { cs[ns++] = c[i]; cs[ns++] = c[j]; } } } for (int i=0; i<n; ++i) { if (c[i].isReal()) cs[ns++] = c[i]; } return cs; }