samer@0: /* samer@0: * Copyright (c) 2000, Samer Abdallah, King's College London. samer@0: * All rights reserved. samer@0: * samer@0: * This software is provided AS iS and WITHOUT ANY WARRANTY; samer@0: * without even the implied warranty of MERCHANTABILITY or samer@0: * FITNESS FOR A PARTICULAR PURPOSE. samer@0: */ samer@0: samer@0: package samer.units; samer@0: import samer.core.*; samer@0: import samer.maths.*; samer@0: samer@0: /** Some special matrix factories */ samer@0: public class Matrices samer@0: { samer@0: public static void set(Matrix A, Generator G) { A.set(G); A.changed(); } samer@0: public static void add(Matrix A, Generator G) { A.add(G); A.changed(); } samer@0: samer@0: public static void fourierBasis(Matrix A) samer@0: { samer@0: int m=A.getColumnDimension(); samer@0: int n=A.getRowDimension(); samer@0: double [][] a = A.getArray(); samer@0: samer@0: for (int j=3; j=jj) { samer@0: t=i-jj; samer@0: a[i][j]=Math.exp(-gamma*t/16)*Math.sin(omega*t); samer@0: } else a[i][j]=0; samer@0: } samer@0: } samer@0: A.changed(); samer@0: } samer@0: samer@0: public static void fuzzyIdentity(Matrix matrix) { samer@0: int n = matrix.getRowDimension(); samer@0: int m = matrix.getColumnDimension(); samer@0: fuzzyIdentity(matrix,Shell.getDouble("sigma", samer@0: (n>m) ? n/(double)m : m/(double)n)); samer@0: } samer@0: samer@0: public static void fuzzyIdentity(Matrix matrix, double s) samer@0: { samer@0: int n = matrix.getRowDimension(); samer@0: int m = matrix.getColumnDimension(); samer@0: double t = s/Math.max(n,m); samer@0: double I[][] = matrix.getArray(); samer@0: samer@0: for (int i=0; i