package org.dawnsci.surfacescatter; import org.eclipse.dawnsci.analysis.api.fitting.functions.IFunction; import org.eclipse.dawnsci.analysis.api.fitting.functions.IOperator; import org.eclipse.dawnsci.analysis.api.fitting.functions.IParameter; import org.eclipse.january.IMonitor; import org.eclipse.january.dataset.Dataset; import org.eclipse.january.dataset.DatasetFactory; import org.eclipse.january.dataset.IDataset; /** * Class that wrappers the equation <br> * z(x, y) = a_0 + a_1 * exp( a_2 * x + a_3 * y) */ public class TwoDExponential implements IFunction{ private static final String NAME = "2D exponential"; private static final String DESC = "z(x, y) = a_0 + a_1 * exp( a_2 * x + a_3 * y)"; private transient double[] a; private transient int nparams = 4; @Override public String getName() { return NAME; } @Override public void setName(String newName) { // TODO Auto-generated method stub } @Override public String getDescription() { // TODO Auto-generated method stub return DESC; } @Override public void setDescription(String newDescription) { // TODO Auto-generated method stub } @Override public IParameter getParameter(int index) { // TODO Auto-generated method stub return null; } @Override public IParameter[] getParameters() { // TODO Auto-generated method stub return null; } @Override public int getNoOfParameters() { // TODO Auto-generated method stub return nparams; } @Override public double getParameterValue(int index) { // TODO Auto-generated method stub return a[index]; } @Override public double[] getParameterValues() { // TODO Auto-generated method stub return a; } @Override public void setParameter(int index, IParameter parameter) { // TODO Auto-generated method stub } @Override public void setParameterValues(double... params) { // TODO Auto-generated method stub } @Override public double val(double... values) { // TODO Auto-generated method stub return 0; } @Override public double partialDeriv(IParameter parameter, double... values) { // TODO Auto-generated method stub return 0; } // @Override // public IDataset calculateValues(IDataset coords) { // // IDataset[] outputArray = new IDataset[coords.length]; // // for(IDataset r : coords){ // IDataset output = DatasetFactory.createFromObject(r); // // for(int i = 0; i < r.getShape()[0]; i++){ // for(int j = 0; j < r.getShape()[0]; j++){ // double z = a[0]+a[1]*Math.exp(a[2]*i + a[3]*j); // output.set(z, i, j ); // // // } // } // // // // } // // return null; // } @Override public IDataset calculateValues(IDataset... coords) { @SuppressWarnings("deprecation") IDataset output = DatasetFactory.zeros( new int[] {coords[0].getSize(), coords[1].getSize()}, Dataset.ARRAYFLOAT64); for(int i = 0; i < coords[0].getShape()[0]; i++){ for(int j = 0; j < coords[1].getShape()[0]; j++){ double z = a[0]+a[1]*Math.exp(a[2]*i + a[3]*j); output.set(z, i, j ); } } return output; } @Override public IDataset calculatePartialDerivativeValues(IParameter parameter, IDataset... coords) { // TODO Auto-generated method stub return null; } @Override public double residual(boolean allValues, IDataset data, IDataset weight, IDataset... coords) { // TODO Auto-generated method stub return 0; } @Override public void setDirty(boolean isDirty) { // TODO Auto-generated method stub } @Override public void setMonitor(IMonitor monitor) { // TODO Auto-generated method stub } @Override public IMonitor getMonitor() { // TODO Auto-generated method stub return null; } @Override public IFunction copy() throws Exception { // TODO Auto-generated method stub return null; } @Override public boolean isValid() { // TODO Auto-generated method stub return false; } @Override public IOperator getParentOperator() { // TODO Auto-generated method stub return null; } @Override public void setParentOperator(IOperator parent) { // TODO Auto-generated method stub } }