/** * Get this pixel's computed spin signal at the given time. The formula is: <CENTER> * <I>S</I>(<I>t</I>) = <B>Σ</B><SUB><I>i</I></SUB> <I>ρ</I><SUB><I>i</I></SUB> [1 − 2 exp(−<I>R</I>1<SUB><I>i</I></SUB> <I>t</I>)] * </CENTER> If the analysis could not find a solution for this pixel, 0 is returned. * * @param t Time. * @return Spin signal, <I>S</I>(<I>t</I>). */ public double S(double t) { if (rho == null) return 0.0; double sum = 0.0; for (int i = 0; i < rho.length; ++i) { sum += SpinSignal.S(rho[i], R1[i], t); } return sum; }
/** * Get a series containing this pixel's computed spin signal for the given time series. If the * analysis could not find a solution for this pixel, null is returned. * * @param t_series Series of times, <I>t</I><SUB><I>j</I></SUB>. * @return Series of spin signals, <I>S</I>(<I>t</I><SUB><I>j</I></SUB>), or null. */ public Series S_series(Series t_series) { if (rho == null) return null; final int M = t_series.length(); final double[] S_computed = new double[M]; for (int j = 0; j < M; ++j) { double t_j = t_series.x(j); double sum = 0.0; for (int i = 0; i < rho.length; ++i) { sum += SpinSignal.S(rho[i], R1[i], t_j); } S_computed[j] = sum; } return new ArraySeries(S_computed); }