support kriging interpolation functions

This commit is contained in:
wyq 2021-04-21 00:02:15 +08:00
parent f19cc4f238
commit 66c71843e4
58 changed files with 1425 additions and 323 deletions

View File

@ -0,0 +1,13 @@
<component name="libraryTable">
<library name="Maven: com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/com/google/guava/listenablefuture/9999.0-empty-to-avoid-conflict-with-guava/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/com/google/guava/listenablefuture/9999.0-empty-to-avoid-conflict-with-guava/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/com/google/guava/listenablefuture/9999.0-empty-to-avoid-conflict-with-guava/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava-sources.jar!/" />
</SOURCES>
</library>
</component>

View File

@ -1,13 +0,0 @@
<component name="libraryTable">
<library name="Maven: com.itextpdf:io:7.1.15">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/com/itextpdf/io/7.1.15/io-7.1.15.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/com/itextpdf/io/7.1.15/io-7.1.15-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/com/itextpdf/io/7.1.15/io-7.1.15-sources.jar!/" />
</SOURCES>
</library>
</component>

View File

@ -1,13 +0,0 @@
<component name="libraryTable">
<library name="Maven: com.itextpdf:itextpdf:5.5.7">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/com/itextpdf/itextpdf/5.5.7/itextpdf-5.5.7.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/com/itextpdf/itextpdf/5.5.7/itextpdf-5.5.7-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/com/itextpdf/itextpdf/5.5.7/itextpdf-5.5.7-sources.jar!/" />
</SOURCES>
</library>
</component>

View File

@ -1,13 +0,0 @@
<component name="libraryTable">
<library name="Maven: com.itextpdf:kernel:7.1.15">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/com/itextpdf/kernel/7.1.15/kernel-7.1.15.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/com/itextpdf/kernel/7.1.15/kernel-7.1.15-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/com/itextpdf/kernel/7.1.15/kernel-7.1.15-sources.jar!/" />
</SOURCES>
</library>
</component>

View File

@ -1,13 +0,0 @@
<component name="libraryTable">
<library name="Maven: com.itextpdf:layout:7.1.15">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/com/itextpdf/layout/7.1.15/layout-7.1.15.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/com/itextpdf/layout/7.1.15/layout-7.1.15-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/com/itextpdf/layout/7.1.15/layout-7.1.15-sources.jar!/" />
</SOURCES>
</library>
</component>

View File

@ -1,13 +0,0 @@
<component name="libraryTable">
<library name="Maven: com.itextpdf:pdfa:7.1.15">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/com/itextpdf/pdfa/7.1.15/pdfa-7.1.15.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/com/itextpdf/pdfa/7.1.15/pdfa-7.1.15-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/com/itextpdf/pdfa/7.1.15/pdfa-7.1.15-sources.jar!/" />
</SOURCES>
</library>
</component>

View File

@ -1,13 +0,0 @@
<component name="libraryTable">
<library name="Maven: com.itextpdf:svg:7.1.15">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/com/itextpdf/svg/7.1.15/svg-7.1.15.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/com/itextpdf/svg/7.1.15/svg-7.1.15-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/com/itextpdf/svg/7.1.15/svg-7.1.15-sources.jar!/" />
</SOURCES>
</library>
</component>

View File

@ -1,13 +1,13 @@
<component name="libraryTable">
<library name="Maven: com.l2fprod:l2fprod-common-all:0.1">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/com/l2fprod/l2fprod-common-all/0.1/l2fprod-common-all-0.1.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/com/l2fprod/l2fprod-common-all/0.1/l2fprod-common-all-0.1-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/com/l2fprod/l2fprod-common-all/0.1/l2fprod-common-all-0.1-sources.jar!/" />
</SOURCES>
</library>
<component name="libraryTable">
<library name="Maven: com.l2fprod:l2fprod-common-all:0.1">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/com/l2fprod/l2fprod-common-all/0.1/l2fprod-common-all-0.1.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/com/l2fprod/l2fprod-common-all/0.1/l2fprod-common-all-0.1-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/com/l2fprod/l2fprod-common-all/0.1/l2fprod-common-all-0.1-sources.jar!/" />
</SOURCES>
</library>
</component>

View File

@ -1,13 +1,13 @@
<component name="libraryTable">
<library name="Maven: org.ejml:ejml-cdense:0.32">
<library name="Maven: org.ejml:ejml-cdense:0.40">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/ejml/ejml-cdense/0.32/ejml-cdense-0.32.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/ejml/ejml-cdense/0.40/ejml-cdense-0.40.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/ejml/ejml-cdense/0.32/ejml-cdense-0.32-javadoc.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/ejml/ejml-cdense/0.40/ejml-cdense-0.40-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/ejml/ejml-cdense/0.32/ejml-cdense-0.32-sources.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/ejml/ejml-cdense/0.40/ejml-cdense-0.40-sources.jar!/" />
</SOURCES>
</library>
</component>

View File

@ -0,0 +1,13 @@
<component name="libraryTable">
<library name="Maven: org.ejml:ejml-cdense:0.40">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/ejml/ejml-cdense/0.40/ejml-cdense-0.40.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/ejml/ejml-cdense/0.40/ejml-cdense-0.40-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/ejml/ejml-cdense/0.40/ejml-cdense-0.40-sources.jar!/" />
</SOURCES>
</library>
</component>

View File

@ -0,0 +1,13 @@
<component name="libraryTable">
<library name="Maven: org.ejml:ejml-cdense:0.40">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/ejml/ejml-cdense/0.40/ejml-cdense-0.40.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/ejml/ejml-cdense/0.40/ejml-cdense-0.40-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/ejml/ejml-cdense/0.40/ejml-cdense-0.40-sources.jar!/" />
</SOURCES>
</library>
</component>

View File

@ -1,13 +0,0 @@
<component name="libraryTable">
<library name="Maven: org.ejml:ejml-core:0.32">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/ejml/ejml-core/0.32/ejml-core-0.32.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/ejml/ejml-core/0.32/ejml-core-0.32-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/ejml/ejml-core/0.32/ejml-core-0.32-sources.jar!/" />
</SOURCES>
</library>
</component>

View File

@ -0,0 +1,13 @@
<component name="libraryTable">
<library name="Maven: org.ejml:ejml-core:0.40">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/ejml/ejml-core/0.40/ejml-core-0.40.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/ejml/ejml-core/0.40/ejml-core-0.40-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/ejml/ejml-core/0.40/ejml-core-0.40-sources.jar!/" />
</SOURCES>
</library>
</component>

View File

@ -0,0 +1,13 @@
<component name="libraryTable">
<library name="Maven: org.ejml:ejml-core:0.40">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/ejml/ejml-core/0.40/ejml-core-0.40.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/ejml/ejml-core/0.40/ejml-core-0.40-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/ejml/ejml-core/0.40/ejml-core-0.40-sources.jar!/" />
</SOURCES>
</library>
</component>

View File

@ -1,13 +1,13 @@
<component name="libraryTable">
<library name="Maven: org.ejml:ejml-ddense:0.32">
<library name="Maven: org.ejml:ejml-ddense:0.40">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/ejml/ejml-ddense/0.32/ejml-ddense-0.32.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/ejml/ejml-ddense/0.40/ejml-ddense-0.40.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/ejml/ejml-ddense/0.32/ejml-ddense-0.32-javadoc.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/ejml/ejml-ddense/0.40/ejml-ddense-0.40-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/ejml/ejml-ddense/0.32/ejml-ddense-0.32-sources.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/ejml/ejml-ddense/0.40/ejml-ddense-0.40-sources.jar!/" />
</SOURCES>
</library>
</component>

View File

@ -1,13 +1,13 @@
<component name="libraryTable">
<library name="Maven: org.ejml:ejml-ddense:0.32">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/ejml/ejml-ddense/0.32/ejml-ddense-0.32.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/ejml/ejml-ddense/0.32/ejml-ddense-0.32-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/ejml/ejml-ddense/0.32/ejml-ddense-0.32-sources.jar!/" />
</SOURCES>
</library>
<component name="libraryTable">
<library name="Maven: org.ejml:ejml-ddense:0.40">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/ejml/ejml-ddense/0.40/ejml-ddense-0.40.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/ejml/ejml-ddense/0.40/ejml-ddense-0.40-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/ejml/ejml-ddense/0.40/ejml-ddense-0.40-sources.jar!/" />
</SOURCES>
</library>
</component>

View File

@ -1,13 +1,13 @@
<component name="libraryTable">
<library name="Maven: org.ejml:ejml-dsparse:0.32">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/ejml/ejml-dsparse/0.32/ejml-dsparse-0.32.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/ejml/ejml-dsparse/0.32/ejml-dsparse-0.32-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/ejml/ejml-dsparse/0.32/ejml-dsparse-0.32-sources.jar!/" />
</SOURCES>
</library>
<component name="libraryTable">
<library name="Maven: org.ejml:ejml-dsparse:0.40">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/ejml/ejml-dsparse/0.40/ejml-dsparse-0.40.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/ejml/ejml-dsparse/0.40/ejml-dsparse-0.40-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/ejml/ejml-dsparse/0.40/ejml-dsparse-0.40-sources.jar!/" />
</SOURCES>
</library>
</component>

View File

@ -1,13 +0,0 @@
<component name="libraryTable">
<library name="Maven: org.ejml:ejml-experimental:0.32">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/ejml/ejml-experimental/0.32/ejml-experimental-0.32.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/ejml/ejml-experimental/0.32/ejml-experimental-0.32-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/ejml/ejml-experimental/0.32/ejml-experimental-0.32-sources.jar!/" />
</SOURCES>
</library>
</component>

View File

@ -1,13 +1,13 @@
<component name="libraryTable">
<library name="Maven: org.ejml:ejml-experimental:0.32">
<library name="Maven: org.ejml:ejml-experimental:0.40">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/ejml/ejml-experimental/0.32/ejml-experimental-0.32.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/ejml/ejml-experimental/0.40/ejml-experimental-0.40.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/ejml/ejml-experimental/0.32/ejml-experimental-0.32-javadoc.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/ejml/ejml-experimental/0.40/ejml-experimental-0.40-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/ejml/ejml-experimental/0.32/ejml-experimental-0.32-sources.jar!/" />
<root url="jar://$MAVEN_REPOSITORY$/org/ejml/ejml-experimental/0.40/ejml-experimental-0.40-sources.jar!/" />
</SOURCES>
</library>
</component>

View File

@ -0,0 +1,13 @@
<component name="libraryTable">
<library name="Maven: org.ejml:ejml-fdense:0.40">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/ejml/ejml-fdense/0.40/ejml-fdense-0.40.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/ejml/ejml-fdense/0.40/ejml-fdense-0.40-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/ejml/ejml-fdense/0.40/ejml-fdense-0.40-sources.jar!/" />
</SOURCES>
</library>
</component>

View File

@ -0,0 +1,13 @@
<component name="libraryTable">
<library name="Maven: org.ejml:ejml-fdense:0.40">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/ejml/ejml-fdense/0.40/ejml-fdense-0.40.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/ejml/ejml-fdense/0.40/ejml-fdense-0.40-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/ejml/ejml-fdense/0.40/ejml-fdense-0.40-sources.jar!/" />
</SOURCES>
</library>
</component>

View File

@ -0,0 +1,13 @@
<component name="libraryTable">
<library name="Maven: org.ejml:ejml-fsparse:0.40">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/ejml/ejml-fsparse/0.40/ejml-fsparse-0.40.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/ejml/ejml-fsparse/0.40/ejml-fsparse-0.40-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/ejml/ejml-fsparse/0.40/ejml-fsparse-0.40-sources.jar!/" />
</SOURCES>
</library>
</component>

View File

@ -1,13 +1,13 @@
<component name="libraryTable">
<library name="Maven: org.ejml:ejml-simple:0.32">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/ejml/ejml-simple/0.32/ejml-simple-0.32.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/ejml/ejml-simple/0.32/ejml-simple-0.32-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/ejml/ejml-simple/0.32/ejml-simple-0.32-sources.jar!/" />
</SOURCES>
</library>
<component name="libraryTable">
<library name="Maven: org.ejml:ejml-simple:0.40">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/ejml/ejml-simple/0.40/ejml-simple-0.40.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/ejml/ejml-simple/0.40/ejml-simple-0.40-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/ejml/ejml-simple/0.40/ejml-simple-0.40-sources.jar!/" />
</SOURCES>
</library>
</component>

View File

@ -1,13 +1,13 @@
<component name="libraryTable">
<library name="Maven: org.ejml:ejml-zdense:0.32">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/ejml/ejml-zdense/0.32/ejml-zdense-0.32.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/ejml/ejml-zdense/0.32/ejml-zdense-0.32-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/ejml/ejml-zdense/0.32/ejml-zdense-0.32-sources.jar!/" />
</SOURCES>
</library>
<component name="libraryTable">
<library name="Maven: org.ejml:ejml-zdense:0.40">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/ejml/ejml-zdense/0.40/ejml-zdense-0.40.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/ejml/ejml-zdense/0.40/ejml-zdense-0.40-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/ejml/ejml-zdense/0.40/ejml-zdense-0.40-sources.jar!/" />
</SOURCES>
</library>
</component>

View File

@ -1,13 +1,13 @@
<component name="libraryTable">
<library name="Maven: org.freehep:freehep-graphics2d:2.4">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/freehep/freehep-graphics2d/2.4/freehep-graphics2d-2.4.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/freehep/freehep-graphics2d/2.4/freehep-graphics2d-2.4-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/freehep/freehep-graphics2d/2.4/freehep-graphics2d-2.4-sources.jar!/" />
</SOURCES>
</library>
<component name="libraryTable">
<library name="Maven: org.freehep:freehep-graphics2d:2.4">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/freehep/freehep-graphics2d/2.4/freehep-graphics2d-2.4.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/freehep/freehep-graphics2d/2.4/freehep-graphics2d-2.4-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/freehep/freehep-graphics2d/2.4/freehep-graphics2d-2.4-sources.jar!/" />
</SOURCES>
</library>
</component>

View File

@ -1,13 +1,13 @@
<component name="libraryTable">
<library name="Maven: org.freehep:freehep-graphicsbase:2.4">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/freehep/freehep-graphicsbase/2.4/freehep-graphicsbase-2.4.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/freehep/freehep-graphicsbase/2.4/freehep-graphicsbase-2.4-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/freehep/freehep-graphicsbase/2.4/freehep-graphicsbase-2.4-sources.jar!/" />
</SOURCES>
</library>
<component name="libraryTable">
<library name="Maven: org.freehep:freehep-graphicsbase:2.4">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/freehep/freehep-graphicsbase/2.4/freehep-graphicsbase-2.4.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/freehep/freehep-graphicsbase/2.4/freehep-graphicsbase-2.4-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/freehep/freehep-graphicsbase/2.4/freehep-graphicsbase-2.4-sources.jar!/" />
</SOURCES>
</library>
</component>

View File

@ -1,13 +1,13 @@
<component name="libraryTable">
<library name="Maven: org.freehep:freehep-graphicsio-emf:2.4">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/freehep/freehep-graphicsio-emf/2.4/freehep-graphicsio-emf-2.4.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/freehep/freehep-graphicsio-emf/2.4/freehep-graphicsio-emf-2.4-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/freehep/freehep-graphicsio-emf/2.4/freehep-graphicsio-emf-2.4-sources.jar!/" />
</SOURCES>
</library>
<component name="libraryTable">
<library name="Maven: org.freehep:freehep-graphicsio-emf:2.4">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/freehep/freehep-graphicsio-emf/2.4/freehep-graphicsio-emf-2.4.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/freehep/freehep-graphicsio-emf/2.4/freehep-graphicsio-emf-2.4-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/freehep/freehep-graphicsio-emf/2.4/freehep-graphicsio-emf-2.4-sources.jar!/" />
</SOURCES>
</library>
</component>

View File

@ -1,13 +1,13 @@
<component name="libraryTable">
<library name="Maven: org.freehep:freehep-graphicsio-pdf:2.4">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/freehep/freehep-graphicsio-pdf/2.4/freehep-graphicsio-pdf-2.4.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/freehep/freehep-graphicsio-pdf/2.4/freehep-graphicsio-pdf-2.4-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/freehep/freehep-graphicsio-pdf/2.4/freehep-graphicsio-pdf-2.4-sources.jar!/" />
</SOURCES>
</library>
<component name="libraryTable">
<library name="Maven: org.freehep:freehep-graphicsio-pdf:2.4">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/freehep/freehep-graphicsio-pdf/2.4/freehep-graphicsio-pdf-2.4.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/freehep/freehep-graphicsio-pdf/2.4/freehep-graphicsio-pdf-2.4-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/freehep/freehep-graphicsio-pdf/2.4/freehep-graphicsio-pdf-2.4-sources.jar!/" />
</SOURCES>
</library>
</component>

View File

@ -0,0 +1,13 @@
<component name="libraryTable">
<library name="Maven: org.freehep:freehep-graphicsio-pdf:2.4">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/freehep/freehep-graphicsio-pdf/2.4/freehep-graphicsio-pdf-2.4.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/freehep/freehep-graphicsio-pdf/2.4/freehep-graphicsio-pdf-2.4-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/freehep/freehep-graphicsio-pdf/2.4/freehep-graphicsio-pdf-2.4-sources.jar!/" />
</SOURCES>
</library>
</component>

View File

@ -1,13 +1,13 @@
<component name="libraryTable">
<library name="Maven: org.freehep:freehep-graphicsio-ps:2.4">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/freehep/freehep-graphicsio-ps/2.4/freehep-graphicsio-ps-2.4.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/freehep/freehep-graphicsio-ps/2.4/freehep-graphicsio-ps-2.4-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/freehep/freehep-graphicsio-ps/2.4/freehep-graphicsio-ps-2.4-sources.jar!/" />
</SOURCES>
</library>
<component name="libraryTable">
<library name="Maven: org.freehep:freehep-graphicsio-ps:2.4">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/freehep/freehep-graphicsio-ps/2.4/freehep-graphicsio-ps-2.4.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/freehep/freehep-graphicsio-ps/2.4/freehep-graphicsio-ps-2.4-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/freehep/freehep-graphicsio-ps/2.4/freehep-graphicsio-ps-2.4-sources.jar!/" />
</SOURCES>
</library>
</component>

View File

@ -1,13 +1,13 @@
<component name="libraryTable">
<library name="Maven: org.freehep:freehep-io:2.2.2">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/freehep/freehep-io/2.2.2/freehep-io-2.2.2.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/freehep/freehep-io/2.2.2/freehep-io-2.2.2-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/freehep/freehep-io/2.2.2/freehep-io-2.2.2-sources.jar!/" />
</SOURCES>
</library>
<component name="libraryTable">
<library name="Maven: org.freehep:freehep-io:2.2.2">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/freehep/freehep-io/2.2.2/freehep-io-2.2.2.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/freehep/freehep-io/2.2.2/freehep-io-2.2.2-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/freehep/freehep-io/2.2.2/freehep-io-2.2.2-sources.jar!/" />
</SOURCES>
</library>
</component>

View File

@ -1,13 +1,13 @@
<component name="libraryTable">
<library name="Maven: org.freehep:freehep-util:2.0.2">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/freehep/freehep-util/2.0.2/freehep-util-2.0.2.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/freehep/freehep-util/2.0.2/freehep-util-2.0.2-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/freehep/freehep-util/2.0.2/freehep-util-2.0.2-sources.jar!/" />
</SOURCES>
</library>
<component name="libraryTable">
<library name="Maven: org.freehep:freehep-util:2.0.2">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/freehep/freehep-util/2.0.2/freehep-util-2.0.2.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/freehep/freehep-util/2.0.2/freehep-util-2.0.2-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/freehep/freehep-util/2.0.2/freehep-util-2.0.2-sources.jar!/" />
</SOURCES>
</library>
</component>

View File

@ -16,14 +16,15 @@
<orderEntry type="module" module-name="meteoinfo-ndarray" />
<orderEntry type="library" name="Maven: org.apache.commons:commons-math3:3.6.1" level="project" />
<orderEntry type="library" name="Maven: jakarta.annotation:jakarta.annotation-api:2.0.0" level="project" />
<orderEntry type="library" name="Maven: org.ejml:ejml-experimental:0.32" level="project" />
<orderEntry type="library" name="Maven: org.ejml:ejml-core:0.32" level="project" />
<orderEntry type="library" name="Maven: org.ejml:ejml-ddense:0.32" level="project" />
<orderEntry type="library" name="Maven: org.ejml:ejml-dsparse:0.32" level="project" />
<orderEntry type="library" name="Maven: org.ejml:ejml-zdense:0.32" level="project" />
<orderEntry type="library" name="Maven: org.ejml:ejml-simple:0.32" level="project" />
<orderEntry type="library" name="Maven: org.ejml:ejml-fdense:0.32" level="project" />
<orderEntry type="library" name="Maven: org.ejml:ejml-cdense:0.32" level="project" />
<orderEntry type="library" name="Maven: org.ejml:ejml-experimental:0.40" level="project" />
<orderEntry type="library" name="Maven: org.ejml:ejml-core:0.40" level="project" />
<orderEntry type="library" name="Maven: org.ejml:ejml-ddense:0.40" level="project" />
<orderEntry type="library" name="Maven: org.ejml:ejml-dsparse:0.40" level="project" />
<orderEntry type="library" name="Maven: org.ejml:ejml-zdense:0.40" level="project" />
<orderEntry type="library" name="Maven: org.ejml:ejml-simple:0.40" level="project" />
<orderEntry type="library" name="Maven: org.ejml:ejml-fdense:0.40" level="project" />
<orderEntry type="library" name="Maven: org.ejml:ejml-cdense:0.40" level="project" />
<orderEntry type="library" name="Maven: org.ejml:ejml-fsparse:0.40" level="project" />
<orderEntry type="module" module-name="meteoinfo-geometry" />
<orderEntry type="library" name="Maven: org.locationtech.jts:jts-core:1.17.0" level="project" />
<orderEntry type="module" module-name="meteoinfo-table" />

View File

@ -24,14 +24,15 @@
<orderEntry type="library" name="Maven: com.google.errorprone:error_prone_annotations:2.5.1" level="project" />
<orderEntry type="library" name="Maven: com.google.j2objc:j2objc-annotations:1.3" level="project" />
<orderEntry type="library" name="Maven: org.mozilla.intl:chardet:1.0" level="project" />
<orderEntry type="library" name="Maven: org.ejml:ejml-experimental:0.32" level="project" />
<orderEntry type="library" name="Maven: org.ejml:ejml-core:0.32" level="project" />
<orderEntry type="library" name="Maven: org.ejml:ejml-ddense:0.32" level="project" />
<orderEntry type="library" name="Maven: org.ejml:ejml-dsparse:0.32" level="project" />
<orderEntry type="library" name="Maven: org.ejml:ejml-zdense:0.32" level="project" />
<orderEntry type="library" name="Maven: org.ejml:ejml-simple:0.32" level="project" />
<orderEntry type="library" name="Maven: org.ejml:ejml-fdense:0.32" level="project" />
<orderEntry type="library" name="Maven: org.ejml:ejml-cdense:0.32" level="project" />
<orderEntry type="library" name="Maven: org.ejml:ejml-experimental:0.40" level="project" />
<orderEntry type="library" name="Maven: org.ejml:ejml-core:0.40" level="project" />
<orderEntry type="library" name="Maven: org.ejml:ejml-ddense:0.40" level="project" />
<orderEntry type="library" name="Maven: org.ejml:ejml-dsparse:0.40" level="project" />
<orderEntry type="library" name="Maven: org.ejml:ejml-zdense:0.40" level="project" />
<orderEntry type="library" name="Maven: org.ejml:ejml-simple:0.40" level="project" />
<orderEntry type="library" name="Maven: org.ejml:ejml-fdense:0.40" level="project" />
<orderEntry type="library" name="Maven: org.ejml:ejml-cdense:0.40" level="project" />
<orderEntry type="library" name="Maven: org.ejml:ejml-fsparse:0.40" level="project" />
<orderEntry type="module" module-name="meteoinfo-geometry" />
<orderEntry type="module" module-name="meteoinfo-ui" />
<orderEntry type="library" name="Maven: com.toedter:jcalendar:1.4" level="project" />

View File

@ -24,14 +24,15 @@
<orderEntry type="library" name="Maven: com.google.errorprone:error_prone_annotations:2.5.1" level="project" />
<orderEntry type="library" name="Maven: com.google.j2objc:j2objc-annotations:1.3" level="project" />
<orderEntry type="library" name="Maven: org.mozilla.intl:chardet:1.0" level="project" />
<orderEntry type="library" name="Maven: org.ejml:ejml-experimental:0.32" level="project" />
<orderEntry type="library" name="Maven: org.ejml:ejml-core:0.32" level="project" />
<orderEntry type="library" name="Maven: org.ejml:ejml-ddense:0.32" level="project" />
<orderEntry type="library" name="Maven: org.ejml:ejml-dsparse:0.32" level="project" />
<orderEntry type="library" name="Maven: org.ejml:ejml-zdense:0.32" level="project" />
<orderEntry type="library" name="Maven: org.ejml:ejml-simple:0.32" level="project" />
<orderEntry type="library" name="Maven: org.ejml:ejml-fdense:0.32" level="project" />
<orderEntry type="library" name="Maven: org.ejml:ejml-cdense:0.32" level="project" />
<orderEntry type="library" name="Maven: org.ejml:ejml-experimental:0.40" level="project" />
<orderEntry type="library" name="Maven: org.ejml:ejml-core:0.40" level="project" />
<orderEntry type="library" name="Maven: org.ejml:ejml-ddense:0.40" level="project" />
<orderEntry type="library" name="Maven: org.ejml:ejml-dsparse:0.40" level="project" />
<orderEntry type="library" name="Maven: org.ejml:ejml-zdense:0.40" level="project" />
<orderEntry type="library" name="Maven: org.ejml:ejml-simple:0.40" level="project" />
<orderEntry type="library" name="Maven: org.ejml:ejml-fdense:0.40" level="project" />
<orderEntry type="library" name="Maven: org.ejml:ejml-cdense:0.40" level="project" />
<orderEntry type="library" name="Maven: org.ejml:ejml-fsparse:0.40" level="project" />
<orderEntry type="library" name="Maven: org.apache.commons:commons-imaging:1.0-alpha1" level="project" />
<orderEntry type="library" name="Maven: com.formdev:flatlaf-extras:1.1.1" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: com.formdev:svgSalamander:1.1.2.4" level="project" />

View File

@ -27,14 +27,15 @@
<orderEntry type="module" module-name="meteoinfo-ndarray" />
<orderEntry type="library" name="Maven: org.apache.commons:commons-math3:3.6.1" level="project" />
<orderEntry type="library" name="Maven: jakarta.annotation:jakarta.annotation-api:2.0.0" level="project" />
<orderEntry type="library" name="Maven: org.ejml:ejml-experimental:0.32" level="project" />
<orderEntry type="library" name="Maven: org.ejml:ejml-core:0.32" level="project" />
<orderEntry type="library" name="Maven: org.ejml:ejml-ddense:0.32" level="project" />
<orderEntry type="library" name="Maven: org.ejml:ejml-dsparse:0.32" level="project" />
<orderEntry type="library" name="Maven: org.ejml:ejml-zdense:0.32" level="project" />
<orderEntry type="library" name="Maven: org.ejml:ejml-simple:0.32" level="project" />
<orderEntry type="library" name="Maven: org.ejml:ejml-fdense:0.32" level="project" />
<orderEntry type="library" name="Maven: org.ejml:ejml-cdense:0.32" level="project" />
<orderEntry type="library" name="Maven: org.ejml:ejml-experimental:0.40" level="project" />
<orderEntry type="library" name="Maven: org.ejml:ejml-core:0.40" level="project" />
<orderEntry type="library" name="Maven: org.ejml:ejml-ddense:0.40" level="project" />
<orderEntry type="library" name="Maven: org.ejml:ejml-dsparse:0.40" level="project" />
<orderEntry type="library" name="Maven: org.ejml:ejml-zdense:0.40" level="project" />
<orderEntry type="library" name="Maven: org.ejml:ejml-simple:0.40" level="project" />
<orderEntry type="library" name="Maven: org.ejml:ejml-fdense:0.40" level="project" />
<orderEntry type="library" name="Maven: org.ejml:ejml-cdense:0.40" level="project" />
<orderEntry type="library" name="Maven: org.ejml:ejml-fsparse:0.40" level="project" />
<orderEntry type="module" module-name="meteoinfo-geometry" />
<orderEntry type="library" name="Maven: org.locationtech.jts:jts-core:1.17.0" level="project" />
<orderEntry type="module" module-name="meteoinfo-table" />

View File

@ -1,11 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<MeteoInfo File="milconfig.xml" Type="configurefile">
<Path OpenPath="D:\Working\MIScript\Jython\mis\io\geotiff">
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\satellite\trmm"/>
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\satellite"/>
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\chart"/>
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\hdf"/>
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\grads"/>
<Path OpenPath="D:\Working\MIScript\Jython\mis\common_math\interpolate">
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\toolbox"/>
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\toolbox\miml"/>
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\toolbox\miml\cluster"/>
@ -13,22 +8,27 @@
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\array"/>
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\map\geoshow"/>
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\map"/>
<RecentFolder Folder="D:\Working\MIScript\Jython\mis"/>
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\io"/>
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\io\geotiff"/>
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\common_math\linalg"/>
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\common_math"/>
<RecentFolder Folder="D:\Working\MIScript\Jython\mis"/>
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\plot_types"/>
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\plot_types\wind"/>
<RecentFolder Folder="D:\Working\MIScript\Jython\mis\common_math\interpolate"/>
</Path>
<File>
<OpenedFiles>
<OpenedFile File="D:\Working\MIScript\Jython\mis\plot_types\3d\jogl\contourf_1.py"/>
<OpenedFile File="D:\Working\MIScript\Jython\mis\toolbox\miml\deep_learning\classification\moon.py"/>
<OpenedFile File="D:\Working\MIScript\Jython\mis\toolbox\miml\cluster\xmeans_1.py"/>
<OpenedFile File="D:\Working\MIScript\Jython\mis\array\flat.py"/>
<OpenedFile File="D:\Working\MIScript\Jython\mis\common_math\interpolate\griddata_kriging.py"/>
</OpenedFiles>
<RecentFiles>
<RecentFile File="D:\Working\MIScript\Jython\mis\plot_types\3d\jogl\contourf_1.py"/>
<RecentFile File="D:\Working\MIScript\Jython\mis\toolbox\miml\deep_learning\classification\moon.py"/>
<RecentFile File="D:\Working\MIScript\Jython\mis\toolbox\miml\cluster\xmeans_1.py"/>
<RecentFile File="D:\Working\MIScript\Jython\mis\array\flat.py"/>
<RecentFile File="D:\Working\MIScript\Jython\mis\common_math\interpolate\griddata_kriging.py"/>
</RecentFiles>
</File>
<Font>
@ -36,5 +36,5 @@
</Font>
<LookFeel DockWindowDecorated="true" LafDecorated="true" Name="FlatDarkLaf"/>
<Figure DoubleBuffering="true"/>
<Startup MainFormLocation="-7,0" MainFormSize="1440,824"/>
<Startup MainFormLocation="-7,-7" MainFormSize="1293,693"/>
</MeteoInfo>

View File

@ -24,14 +24,18 @@ class interp1d(object):
:param x: (*array_like*) A 1-D array of real values.
:param y: (*array_like*) A 1-D array of real values. The length of y must be equal to the length of x.
:param kind: (*boolean*) Specifies the kind of interpolation as a string (linear,
cubic,akima,divided,loess,neville). Default is linear.
cubic,akima,divided,loess,neville,'kriging'). Default is linear.
'''
def __init__(self, x, y, kind='linear'):
def __init__(self, x, y, kind='linear', **kwargs):
if isinstance(x, list):
x = np.array(x)
if isinstance(y, list):
y = np.array(y)
self._func = InterpUtil.getInterpFunc(x.asarray(), y.asarray(), kind)
if kind == 'kriging':
beta = kwargs.pop('beta', 1.5)
self._func = InterpUtil.getKriging1D(x.asarray(), y.asarray(), beta)
else:
self._func = InterpUtil.getInterpFunc(x.asarray(), y.asarray(), kind)
def __call__(self, x):
'''
@ -278,6 +282,9 @@ def griddata(points, values, xi=None, **kwargs):
return NDArray(r[0]), x_g, y_g, NDArray(r[1])
elif method == 'surface':
r = InterpUtil.interpolation_Surface(x_s.asarray(), y_s.asarray(), values, x_g.asarray(), y_g.asarray())
elif method == 'kriging':
beta = kwargs.pop('beta', 1.5)
r = InterpUtil.gridDataKriging(x_s.asarray(), y_s.asarray(), values, x_g.asarray(), y_g.asarray(), beta)
else:
return None

View File

@ -17,14 +17,15 @@
<orderEntry type="module" module-name="meteoinfo-ndarray" />
<orderEntry type="library" name="Maven: org.apache.commons:commons-math3:3.6.1" level="project" />
<orderEntry type="library" name="Maven: jakarta.annotation:jakarta.annotation-api:2.0.0" level="project" />
<orderEntry type="library" name="Maven: org.ejml:ejml-experimental:0.32" level="project" />
<orderEntry type="library" name="Maven: org.ejml:ejml-core:0.32" level="project" />
<orderEntry type="library" name="Maven: org.ejml:ejml-ddense:0.32" level="project" />
<orderEntry type="library" name="Maven: org.ejml:ejml-dsparse:0.32" level="project" />
<orderEntry type="library" name="Maven: org.ejml:ejml-zdense:0.32" level="project" />
<orderEntry type="library" name="Maven: org.ejml:ejml-simple:0.32" level="project" />
<orderEntry type="library" name="Maven: org.ejml:ejml-fdense:0.32" level="project" />
<orderEntry type="library" name="Maven: org.ejml:ejml-cdense:0.32" level="project" />
<orderEntry type="library" name="Maven: org.ejml:ejml-experimental:0.40" level="project" />
<orderEntry type="library" name="Maven: org.ejml:ejml-core:0.40" level="project" />
<orderEntry type="library" name="Maven: org.ejml:ejml-ddense:0.40" level="project" />
<orderEntry type="library" name="Maven: org.ejml:ejml-dsparse:0.40" level="project" />
<orderEntry type="library" name="Maven: org.ejml:ejml-zdense:0.40" level="project" />
<orderEntry type="library" name="Maven: org.ejml:ejml-simple:0.40" level="project" />
<orderEntry type="library" name="Maven: org.ejml:ejml-fdense:0.40" level="project" />
<orderEntry type="library" name="Maven: org.ejml:ejml-cdense:0.40" level="project" />
<orderEntry type="library" name="Maven: org.ejml:ejml-fsparse:0.40" level="project" />
<orderEntry type="module" module-name="meteoinfo-geometry" />
<orderEntry type="library" name="Maven: org.locationtech.jts:jts-core:1.17.0" level="project" />
<orderEntry type="module" module-name="meteoinfo-table" />

View File

@ -23,13 +23,14 @@
<orderEntry type="library" name="Maven: com.google.errorprone:error_prone_annotations:2.5.1" level="project" />
<orderEntry type="library" name="Maven: com.google.j2objc:j2objc-annotations:1.3" level="project" />
<orderEntry type="library" name="Maven: org.mozilla.intl:chardet:1.0" level="project" />
<orderEntry type="library" name="Maven: org.ejml:ejml-experimental:0.32" level="project" />
<orderEntry type="library" name="Maven: org.ejml:ejml-core:0.32" level="project" />
<orderEntry type="library" name="Maven: org.ejml:ejml-ddense:0.32" level="project" />
<orderEntry type="library" name="Maven: org.ejml:ejml-dsparse:0.32" level="project" />
<orderEntry type="library" name="Maven: org.ejml:ejml-zdense:0.32" level="project" />
<orderEntry type="library" name="Maven: org.ejml:ejml-simple:0.32" level="project" />
<orderEntry type="library" name="Maven: org.ejml:ejml-fdense:0.32" level="project" />
<orderEntry type="library" name="Maven: org.ejml:ejml-cdense:0.32" level="project" />
<orderEntry type="library" name="Maven: org.ejml:ejml-experimental:0.40" level="project" />
<orderEntry type="library" name="Maven: org.ejml:ejml-core:0.40" level="project" />
<orderEntry type="library" name="Maven: org.ejml:ejml-ddense:0.40" level="project" />
<orderEntry type="library" name="Maven: org.ejml:ejml-dsparse:0.40" level="project" />
<orderEntry type="library" name="Maven: org.ejml:ejml-zdense:0.40" level="project" />
<orderEntry type="library" name="Maven: org.ejml:ejml-simple:0.40" level="project" />
<orderEntry type="library" name="Maven: org.ejml:ejml-fdense:0.40" level="project" />
<orderEntry type="library" name="Maven: org.ejml:ejml-cdense:0.40" level="project" />
<orderEntry type="library" name="Maven: org.ejml:ejml-fsparse:0.40" level="project" />
</component>
</module>

View File

@ -30,12 +30,12 @@
<dependency>
<groupId>org.ejml</groupId>
<artifactId>ejml-experimental</artifactId>
<version>0.32</version>
<version>0.40</version>
</dependency>
<dependency>
<groupId>org.ejml</groupId>
<artifactId>ejml-simple</artifactId>
<version>0.32</version>
<version>0.40</version>
</dependency>
</dependencies>

View File

@ -0,0 +1,25 @@
package org.meteoinfo.math;
import java.io.Serializable;
public interface Function extends Serializable {
/**
* Computes the value of the function at x.
*
* @param x a real number.
* @return the function value.
*/
double f(double x);
/**
* Computes the value of the function at x.
* It delegates the computation to f().
* This is simply for Scala convenience.
*
* @param x a real number.
* @return the function value.
*/
default double apply(double x) {
return f(x);
}
}

View File

@ -82,6 +82,21 @@ public class InterpUtil {
return psf;
}
/**
* Get Kriging interpolation 1D class
* @param x X array
* @param y Y array
* @param beta Beta value
* @return Kriging interpolation 1D class
*/
public static KrigingInterpolation1D getKriging1D(Array x, Array y, double beta) {
double[] xd = (double[]) ArrayUtil.copyToNDJavaArray_Double(x);
double[] yd = (double[]) ArrayUtil.copyToNDJavaArray_Double(y);
KrigingInterpolation1D krigingInterpolation1D = new KrigingInterpolation1D(xd, yd, beta);
return krigingInterpolation1D;
}
/**
* Make interpolation function for grid data
*
@ -137,6 +152,34 @@ public class InterpUtil {
return func.value(x.doubleValue());
}
/**
* Compute the value of the function
*
* @param func The function
* @param x Input data
* @return Function value
*/
public static double evaluate(KrigingInterpolation1D func, Number x) {
return func.interpolate(x.doubleValue());
}
/**
* Compute the value of the function
*
* @param func The function
* @param x Input data
* @return Function value
*/
public static Array evaluate(KrigingInterpolation1D func, Array x) {
Array r = Array.factory(DataType.DOUBLE, x.getShape());
IndexIterator xIter = x.getIndexIterator();
for (int i = 0; i < r.getSize(); i++) {
r.setDouble(i, func.interpolate(xIter.getDoubleNext()));
}
return r;
}
/**
* Compute the value of the function
*
@ -1931,4 +1974,47 @@ public class InterpUtil {
return r;
}
/**
* Interpolation with Kriging2D method
*
* @param x_s scatter X array
* @param y_s scatter Y array
* @param a scatter value array
* @param X grid X array
* @param Y grid Y array
* @param beta Beta
* @return interpolated grid data
*/
public static Array gridDataKriging(Array x_s, Array y_s, Array a,
Array X, Array Y, double beta) {
X = X.copyIfView();
Y = Y.copyIfView();
double[] xd = (double[]) ArrayUtil.copyToNDJavaArray_Double(x_s);
double[] yd = (double[]) ArrayUtil.copyToNDJavaArray_Double(y_s);
double[] ad = (double[]) ArrayUtil.copyToNDJavaArray_Double(a);
int rowNum, colNum, pNum;
colNum = (int)X.getSize();
rowNum = (int)Y.getSize();
pNum = (int)x_s.getSize();
Array r = Array.factory(DataType.DOUBLE, new int[]{rowNum, colNum});
int i, j;
double w, gx, gy, v;
boolean match;
//Construct Kriging2D interpolation
KrigingInterpolation2D ki2d = new KrigingInterpolation2D(xd, yd, ad, beta);
//---- Do interpolation
for (i = 0; i < rowNum; i++) {
gy = Y.getDouble(i);
for (j = 0; j < colNum; j++) {
gx = X.getDouble(j);
r.setDouble(i * colNum + j, ki2d.interpolate(gx, gy));
}
}
return r;
}
}

View File

@ -0,0 +1,42 @@
/*
* Copyright (c) 2010-2020 Haifeng Li. All rights reserved.
*
* Smile is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation, either version 3 of
* the License, or (at your option) any later version.
*
* Smile is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with Smile. If not, see <https://www.gnu.org/licenses/>.
*/
package org.meteoinfo.math.interpolate;
import java.io.Serializable;
/**
* In numerical analysis, interpolation is a method of constructing new data
* points within the range of a discrete set of known data points.
* In engineering and science one often has a number of data points, as
* obtained by sampling or experimentation, and tries to construct a function
* which closely fits those data points. This is called curve fitting or
* regression analysis. Interpolation is a specific case of curve fitting,
* in which the function must go exactly through the data points.
*
* @author Haifeng Li
*/
public interface Interpolation extends Serializable {
/**
* Given a value x, return an interpolated value.
*
* @param x a real number.
* @return the interpolated function value.
*/
double interpolate(double x);
}

View File

@ -0,0 +1,37 @@
/*
* Copyright (c) 2010-2020 Haifeng Li. All rights reserved.
*
* Smile is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation, either version 3 of
* the License, or (at your option) any later version.
*
* Smile is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with Smile. If not, see <https://www.gnu.org/licenses/>.
*/
package org.meteoinfo.math.interpolate;
import java.io.Serializable;
/**
* Interpolation of 2-dimensional data.
*
* @author Haifeng Li
*/
public interface Interpolation2D extends Serializable {
/**
* Interpolate the data at a given 2-dimensional point.
*
* @param x1 the 1st dimension value.
* @param x2 the 2nd dimension value.
* @return the interpolated function value.
*/
double interpolate(double x1, double x2);
}

View File

@ -0,0 +1,176 @@
/*
* Copyright (c) 2010-2020 Haifeng Li. All rights reserved.
*
* Smile is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation, either version 3 of
* the License, or (at your option) any later version.
*
* Smile is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with Smile. If not, see <https://www.gnu.org/licenses/>.
*/
package org.meteoinfo.math.interpolate;
import org.apache.commons.math3.linear.*;
import org.meteoinfo.math.interpolate.variogram.PowerVariogram;
import org.meteoinfo.math.interpolate.variogram.Variogram;
/**
* Kriging interpolation for the data points irregularly distributed in space.
* Kriging belongs to the family of linear least squares estimation algorithms,
* also known as Gauss-Markov estimation or Gaussian process regression.
* <p>
* Kriging can be either an interpolation method or a fitting method. The distinction
* between the two is whether the fitted/interpolated function goes exactly
* through all the input data points (interpolation), or whether it allows
* measurement errors to be specified and then "smooths" to get a statistically
* better predictor that does not generally go through the data points.
* <p>
* The aim of kriging is to estimate the value of an unknown real-valued
* function, f, at a point, x, given the values of the function at some
* other points, x<sub>1</sub>,&hellip;, x<sub>n</sub>. Kriging computes the
* best linear unbiased estimator based on a stochastic model of the spatial
* dependence quantified either by the variogram &gamma;(x,y) or by expectation
* &mu;(x) = E[f(x)] and the covariance function c(x,y) of the random field.
* A kriging estimator is a linear combination that may be written as
* <p>
* &fnof;(x) = &Sigma; &lambda;<sub>i</sub>(x) f(x<sub>i</sub>)
* <p>
* The weights &lambda;<sub>i</sub> are solutions of a system of linear
* equations which is obtained by assuming that f is a sample-path of a
* random process F(x), and that the error of prediction
* <p>
* &epsilon;(x) = F(x) - &Sigma; &lambda;<sub>i</sub>(x) F(x<sub>i</sub>)
* <p>
* is to be minimized in some sense.
* <p>
* Depending on the stochastic properties of the random field different
* types of kriging apply. The type of kriging determines the linear
* constraint on the weights &lambda;<sub>i</sub> implied by the unbiasedness
* condition; i.e. the linear constraint, and hence the method for calculating
* the weights, depends upon the type of kriging.
* <p>
* This class implements ordinary kriging, which is the most commonly used type
* of kriging. The typical assumptions for the practical application of ordinary
* kriging are:
* <ul>
* <li> Intrinsic stationarity or wide sense stationarity of the field
* <li> enough observations to estimate the variogram.
* </ul>
* The mathematical condition for applicability of ordinary kriging are:
* <ul>
* <li> The mean E[f(x)] = &mu; is unknown but constant
* <li> The variogram &gamma;(x,y) = E[(f(x) - f(y))<sup>2</sup>] of f(x) is known.
* </ul>
* The kriging weights of ordinary kriging fulfill the unbiasedness condition
* &Sigma; &lambda;<sub>i</sub> = 1
*
* @author Haifeng Li
*/
public class KrigingInterpolation {
/** The control points. */
private final double[][] x;
/** The variogram. */
private final Variogram variogram;
/** The linear weights. */
private final double[] yvi;
/**
* Constructor. The power variogram is employed. We assume no errors,
* i.e. we are doing interpolation rather fitting.
*
* @param x the data points.
* @param y the function values at <code>x</code>.
*/
public KrigingInterpolation(double[][] x, double[] y) {
this(x, y, new PowerVariogram(x, y), null);
}
/**
* Constructor.
*
* @param x the data points.
* @param y the function values at <code>x</code>.
* @param variogram the variogram function of offset distance to estimate
* the mean square variation of function y(x).
* @param error the measure error associated with y. It is the sqrt of diagonal
* elements of covariance matrix.
*/
public KrigingInterpolation(double[][] x, double[] y, Variogram variogram, double[] error) {
this.x = x;
this.variogram = variogram;
int n = x.length;
double[] yv = new double[n + 1];
RealMatrix v = new Array2DRowRealMatrix(n + 1, n + 1);
for (int i = 0; i < n; i++) {
yv[i] = y[i];
for (int j = i; j < n; j++) {
double var = variogram.f(rdist(x[i], x[j]));
v.setEntry(i, j, var);
v.setEntry(j, i, var);
}
v.setEntry(n, i, 1.0);
v.setEntry(i, n, 1.0);
}
yv[n] = 0.0;
v.setEntry(n, n, 0.0);
if (error != null) {
for (int i = 0; i < n; i++) {
v.setEntry(i, i, v.getEntry(i, i) - error[i] * error[i]);
}
}
DecompositionSolver solver = new SingularValueDecomposition(v).getSolver();
RealVector constants = new ArrayRealVector(yv, false);
RealVector solution = solver.solve(constants);
yvi = solution.toArray();
}
/**
* Interpolate the function at given point.
* @param x a point.
* @return the interpolated function value.
*/
public double interpolate(double... x) {
if (x.length != this.x[0].length) {
throw new IllegalArgumentException(String.format("Invalid input vector size: %d, expected: %d", x.length, this.x[0].length));
}
int n = this.x.length;
double y = yvi[n];
for (int i = 0; i < n; i++) {
y += yvi[i] * variogram.f(rdist(x, this.x[i]));
}
return y;
}
/**
* Cartesian distance.
*/
private double rdist(double[] x1, double[] x2) {
double d = 0.0;
for (int i = 0; i < x1.length; i++) {
double t = x1[i] - x2[i];
d += t * t;
}
return Math.sqrt(d);
}
@Override
public String toString() {
return String.format("Kriging Interpolation(%s)", variogram);
}
}

View File

@ -0,0 +1,136 @@
/*
* Copyright (c) 2010-2020 Haifeng Li. All rights reserved.
*
* Smile is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation, either version 3 of
* the License, or (at your option) any later version.
*
* Smile is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with Smile. If not, see <https://www.gnu.org/licenses/>.
*/
package org.meteoinfo.math.interpolate;
import org.apache.commons.math3.linear.*;
import org.meteoinfo.math.MathEx;
/**
* Kriging interpolation for the data points irregularly distributed in space.
* Kriging belongs to the family of linear least squares estimation algorithms,
* also known as Gauss-Markov estimation or Gaussian process regression.
* This class implements ordinary kriging for interpolation with power variogram.
*
* @author Haifeng Li
*/
public class KrigingInterpolation1D implements Interpolation {
/** The control points. */
private final double[] x;
/** The linear weights. */
private final double[] yvi;
/** The parameter of power variogram. */
private final double alpha;
/** The parameter of power variogram. */
private final double beta;
/**
* Constructor. The power variogram is employed for interpolation.
*
* @param x the tabulated points.
* @param y the function values at <code>x</code>.
*/
public KrigingInterpolation1D(double[] x, double[] y) {
this(x, y, 1.5);
}
/**
* Constructor. The power variogram is employed for interpolation.
*
* @param x the tabulated points.
* @param y the function values at <code>x</code>.
* @param beta the parameter of power variogram. The value of &beta;
* should be in the range {@code 1 <=} &beta; {@code < 2}.
* A good general choice is 1.5, but for functions with
* a strong linear trend, we may experiment with values as
* large as 1.99.
*/
public KrigingInterpolation1D(double[] x, double[] y, double beta) {
if (beta < 1.0 || beta >= 2.0) {
throw new IllegalArgumentException("Invalid beta: " + beta);
}
if (x.length != y.length) {
throw new IllegalArgumentException("x.length != y.length");
}
this.x = x;
this.beta = beta;
this.alpha = pow(x, y);
int n = x.length;
double[] yv = new double[n + 1];
RealMatrix v = new Array2DRowRealMatrix(n + 1, n + 1);
//v.uplo(UPLO.LOWER);
for (int i = 0; i < n; i++) {
yv[i] = y[i];
for (int j = i; j < n; j++) {
double var = variogram(Math.abs(x[i] - x[j]));
v.setEntry(i, j, var);
v.setEntry(j, i, var);
}
v.setEntry(n, i, 1.0);
v.setEntry(i, n, 1.0);
}
yv[n] = 0.0;
v.setEntry(n, n, 0.0);
DecompositionSolver solver = new SingularValueDecomposition(v).getSolver();
RealVector constants = new ArrayRealVector(yv, false);
RealVector solution = solver.solve(constants);
yvi = solution.toArray();
}
@Override
public double interpolate(double x) {
int n = this.x.length;
double y = yvi[n];
for (int i = 0; i < n; i++) {
y += yvi[i] * variogram(Math.abs(x - this.x[i]));
}
return y;
}
private double pow(double[] x, double[] y) {
int n = x.length;
double num = 0.0, denom = 0.0;
for (int i = 0; i < n; i++) {
for (int j = i + 1; j < n; j++) {
double rb = MathEx.pow2(x[i] - x[j]);
rb = Math.pow(rb, 0.5 * beta);
num += rb * 0.5 * MathEx.pow2(y[i] - y[j]);
denom += rb * rb;
}
}
return num / denom;
}
private double variogram(double r) {
return alpha * Math.pow(r, beta);
}
@Override
public String toString() {
return "Kriging Interpolation";
}
}

View File

@ -0,0 +1,155 @@
/*
* Copyright (c) 2010-2020 Haifeng Li. All rights reserved.
*
* Smile is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation, either version 3 of
* the License, or (at your option) any later version.
*
* Smile is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with Smile. If not, see <https://www.gnu.org/licenses/>.
*/
package org.meteoinfo.math.interpolate;
import org.apache.commons.math3.linear.*;
import org.meteoinfo.math.MathEx;
/**
* Kriging interpolation for the data points irregularly distributed in space.
* Kriging belongs to the family of linear least squares estimation algorithms,
* also known as Gauss-Markov estimation or Gaussian process regression.
* This class implements ordinary kriging for interpolation with power variogram.
*
* @author Haifeng Li
*/
public class KrigingInterpolation2D implements Interpolation2D {
/** The first dimension of tabulated control points. */
private final double[] x1;
/** The second dimension of tabulated control points. */
private final double[] x2;
/** The linear weights. */
private final double[] yvi;
/** The parameter of power variogram. */
private final double alpha;
/** The parameter of power variogram. */
private final double beta;
/**
* Constructor. The power variogram is employed for interpolation.
* @param x1 the 1st dimension of data points.
* @param x2 the 2nd dimension of data points.
* @param y the function values at <code>(x1, x2)</code>.
*/
public KrigingInterpolation2D(double[] x1, double[] x2, double[] y) {
this(x1, x2, y, 1.5);
}
/**
* Constructor. The power variogram is employed for interpolation.
* @param x1 the 1st dimension of data points.
* @param x2 the 2nd dimension of data points.
* @param y the function values at <code>(x1, x2)</code>.
* @param beta the parameter of power variogram. The value of &beta;
* should be in the range {@code 1 <=} &beta; {@code < 2}.
* A good general choice is 1.5, but for functions with
* a strong linear trend, we may experiment with values as
* large as 1.99.
*/
public KrigingInterpolation2D(double[] x1, double[] x2, double[] y, double beta) {
if (beta < 1.0 || beta >= 2.0) {
throw new IllegalArgumentException("Invalid beta: " + beta);
}
if (x1.length != x2.length) {
throw new IllegalArgumentException("x1.length != x2.length");
}
if (x1.length != y.length) {
throw new IllegalArgumentException("x.length != y.length");
}
this.x1 = x1;
this.x2 = x2;
this.beta = beta;
this.alpha = pow(x1, x2, y);
int n = x1.length;
double[] yv = new double[n + 1];
RealMatrix v = new Array2DRowRealMatrix(n + 1, n + 1);
//v.uplo(UPLO.LOWER);
for (int i = 0; i < n; i++) {
yv[i] = y[i];
for (int j = i; j < n; j++) {
double d1 = x1[i] - x1[j];
double d2 = x2[i] - x2[j];
double d = d1 * d1 + d2 * d2;
double var = variogram(d);
v.setEntry(i, j, var);
v.setEntry(j, i, var);
}
v.setEntry(n, i, 1.0);
v.setEntry(i, n, 1.0);
}
yv[n] = 0.0;
v.setEntry(n, n, 0.0);
DecompositionSolver solver = new SingularValueDecomposition(v).getSolver();
RealVector constants = new ArrayRealVector(yv, false);
RealVector solution = solver.solve(constants);
yvi = solution.toArray();
}
@Override
public double interpolate(double x1, double x2) {
int n = this.x1.length;
double y = yvi[n];
for (int i = 0; i < n; i++) {
double d1 = x1 - this.x1[i];
double d2 = x2 - this.x2[i];
double d = d1 * d1 + d2 * d2;
y += yvi[i] * variogram(d);
}
return y;
}
private double pow(double[] x1, double[] x2, double[] y) {
int n = x1.length;
double num = 0.0, denom = 0.0;
for (int i = 0; i < n; i++) {
for (int j = i + 1; j < n; j++) {
double d1 = x1[i] - x1[j];
double d2 = x2[i] - x2[j];
double d = d1 * d1 + d2 * d2;
double rb = Math.pow(d, beta/2);
num += rb * 0.5 * MathEx.pow2(y[i] - y[j]);
denom += rb * rb;
}
}
return num / denom;
}
private double variogram(double r) {
return alpha * Math.pow(r, beta/2);
}
@Override
public String toString() {
return "Kriging Interpolation";
}
}

View File

@ -0,0 +1,89 @@
/*
* Copyright (c) 2010-2020 Haifeng Li. All rights reserved.
*
* Smile is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation, either version 3 of
* the License, or (at your option) any later version.
*
* Smile is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with Smile. If not, see <https://www.gnu.org/licenses/>.
*/
package org.meteoinfo.math.interpolate.variogram;
/**
* Exponential variogram.
* <p>
* v(r) = c + b * (1 - e<sup>-3r/a</sup>)
* <p>
* where a is the range parameter and b is sill paramter. The distance of two
* pairs increase, the variogram of those two pairs also increase. Eventually,
* the increase of the distance can not cause the variogram increase. The
* distance which cause the variogram reach plateau is called range. The sill
* parameter b is the maximum variogram value (by default, we set c = 0).
* <p>
* The parameter c is the so-called nugget effect. Though the value of the
* variogram for h = 0 is strictly 0, several factors, such as sampling error
* and short scale variability, may cause sample values separated by extremely
* small distances to be quite dissimilar. This causes a discontinuity at the
* origin of the variogram. The vertical jump from the value of 0 at the origin
* to the value of the variogram at extremely small separation distances is
* called the nugget effect.
*
* @author Haifeng Li
*/
public class ExponentialVariogram implements Variogram {
/** The range parameter. */
private final double a;
/** The sill parameter. */
private final double b;
/** The nugget effect parameter. */
private final double c;
/**
* Constructor. No nugget effect.
* @param a the range parameter.
* @param b the sill parameter.
*/
public ExponentialVariogram(double a, double b) {
this(a, b, 0.0);
}
/**
* Constructor.
* @param a the range parameter.
* @param b the sill parameter.
* @param c the nugget effect parameter.
*/
public ExponentialVariogram(double a, double b, double c) {
if (a <= 0)
throw new IllegalArgumentException("Invalid parameter a = " + a);
if (b <= 0)
throw new IllegalArgumentException("Invalid parameter b = " + b);
if (c < 0)
throw new IllegalArgumentException("Invalid parameter c = " + c);
this.a = a;
this.b = b;
this.c = c;
}
@Override
public double f(double r) {
return c + b * (1 - Math.exp(-3.0*r/a));
}
@Override
public String toString() {
return String.format("Exponential Variogram(range = %.4f, sill = %.4f, nugget effect = %.4f)", a, b, c);
}
}

View File

@ -0,0 +1,90 @@
/*
* Copyright (c) 2010-2020 Haifeng Li. All rights reserved.
*
* Smile is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation, either version 3 of
* the License, or (at your option) any later version.
*
* Smile is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with Smile. If not, see <https://www.gnu.org/licenses/>.
*/
package org.meteoinfo.math.interpolate.variogram;
import org.meteoinfo.math.MathEx;
/**
* Gaussian variogram.
* <p>
* v(r) = c + b * (1 - exp(-3r<sup>2</sup>/a<sup>2</sup>))
* <p>
* where a is the range parameter and b is sill parameter. The distance of two
* pairs increase, the variogram of those two pairs also increase. Eventually,
* the increase of the distance can not cause the variogram increase. The
* distance which cause the variogram reach plateau is called range. The sill
* parameter b is the maximum variogram value (by default, we set c = 0).
* <p>
* The parameter c is the so-called nugget effect. Though the value of the
* variogram for h = 0 is strictly 0, several factors, such as sampling error
* and short scale variability, may cause sample values separated by extremely
* small distances to be quite dissimilar. This causes a discontinuity at the
* origin of the variogram. The vertical jump from the value of 0 at the origin
* to the value of the variogram at extremely small separation distances is
* called the nugget effect.
*
* @author Haifeng Li
*/
public class GaussianVariogram implements Variogram {
/** The range parameter. */
private final double a;
/** The sill parameter. */
private final double b;
/** The nugget effect parameter. */
private final double c;
/**
* Constructor. No nugget effect.
* @param a the range parameter.
* @param b the sill parameter.
*/
public GaussianVariogram(double a, double b) {
this(a, b, 0.0);
}
/**
* Constructor.
* @param a the range parameter.
* @param b the sill parameter.
* @param c the nugget effect parameter.
*/
public GaussianVariogram(double a, double b, double c) {
if (a <= 0)
throw new IllegalArgumentException("Invalid parameter a = " + a);
if (b <= 0)
throw new IllegalArgumentException("Invalid parameter b = " + b);
if (c < 0)
throw new IllegalArgumentException("Invalid parameter c = " + c);
this.a = a;
this.b = b;
this.c = c;
}
@Override
public double f(double r) {
return c + b * (1 - Math.exp(-3.0* MathEx.pow2(r/a)));
}
@Override
public String toString() {
return String.format("Gaussian Variogram(range = %.4f, sill = %.4f, nugget effect = %.4f)", a, b, c);
}
}

View File

@ -0,0 +1,120 @@
/*
* Copyright (c) 2010-2020 Haifeng Li. All rights reserved.
*
* Smile is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation, either version 3 of
* the License, or (at your option) any later version.
*
* Smile is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with Smile. If not, see <https://www.gnu.org/licenses/>.
*/
package org.meteoinfo.math.interpolate.variogram;
import org.meteoinfo.math.MathEx;
/**
* Power variogram.
* <p>
* v(r) = c + &alpha; r<sup>&beta;</sup>
* <p>
* where &beta; is fixed and &alpha; is fitted by unweighted least squares
* over all pairs of data points. The value of &beta; should be in the range
* {@code 1 <=} &beta; {@code < 2}. A good general choice is 1.5, but for
* functions with a strong linear trend, we may experiment with values as
* large as 1.99.
* <p>
* The parameter c is the so-called nugget effect. Though the value of the
* variogram for <code>h = 0</code> is strictly 0, several factors, such as
* sampling error and short scale variability, may cause sample values separated
* by extremely small distances to be quite dissimilar. This causes a discontinuity
* at the origin of the variogram. The vertical jump from the value of 0 at the
* origin to the value of the variogram at extremely small separation distances is
* called the nugget effect.
*
* @author Haifeng Li
*/
public class PowerVariogram implements Variogram {
/** The parameter fitted by unweighted least squares on data points. */
private final double alpha;
/** The fixed parameter {@code 1 <= beta < 2}. */
private final double beta;
/** The nugget effect parameter. */
private final double nugget;
/**
* Constructor. No nugget effect and &beta; = 1.5 and &alpha; will be estimated from x and y.
* @param x the training data.
* @param y the responsible variable.
*/
public PowerVariogram(double[][] x, double[] y) {
this(x, y, 1.5);
}
/**
* Constructor. No nugget effect and &alpha; will be estimated from x and y.
* @param x the training data.
* @param y the responsible variable.
* @param beta the beta parameter {@code 1 <=} &beta; {@code < 2}.
*/
public PowerVariogram(double[][] x, double[] y, double beta) {
this(x, y, beta, 0.0);
}
/**
* Constructor. &alpha; will be estimated from x and y.
* @param x the training data.
* @param y the responsible variable.
* @param beta the beta parameter {@code 1 <=} &beta; {@code < 2}.
* @param nugget the nugget effect parameter. The height of the jump of
* the variogram at the discontinuity at the origin.
*/
public PowerVariogram(double[][] x, double[] y, double beta, double nugget) {
if (beta < 1 || beta >= 2) {
throw new IllegalArgumentException("Invalid beta = " + beta);
}
if (nugget < 0) {
throw new IllegalArgumentException("Invalid nugget effect = " + nugget);
}
this.beta = beta;
this.nugget = nugget;
int n = x.length;
int dim = x[0].length;
double num = 0.0, denom = 0.0;
for (int i = 0; i < n; i++) {
for (int j = i + 1; j < n; j++) {
double rb = 0.0;
for (int k = 0; k < dim; k++) {
rb += MathEx.pow2(x[i][k] - x[j][k]);
}
rb = Math.pow(rb, 0.5 * beta);
num += rb * 0.5 * MathEx.pow2(y[i] - y[j] - nugget);
denom += rb * rb;
}
}
alpha = num / denom;
}
@Override
public double f(double r) {
return nugget + alpha * Math.pow(r, beta);
}
@Override
public String toString() {
return String.format("Power Variogram(range = %.4f, sill = %.4f, nugget effect = %.4f)", alpha, beta, nugget);
}
}

View File

@ -0,0 +1,96 @@
/*
* Copyright (c) 2010-2020 Haifeng Li. All rights reserved.
*
* Smile is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation, either version 3 of
* the License, or (at your option) any later version.
*
* Smile is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with Smile. If not, see <https://www.gnu.org/licenses/>.
*/
package org.meteoinfo.math.interpolate.variogram;
/**
* Spherical variogram.
* <p>
* v(r) = c + b * (1.5 * r / a - 0.5 * (r / a)<sup>3</sup>) for {@code 0 <= r <= a}
* <p>
* or
* <p>
* v(r) = c + b for {@code a <= r}
* <p>
* where a is the range parameter and b is sill parameter. The distance of two
* pairs increase, the variogram of those two pairs also increase. Eventually,
* the increase of the distance can not cause the variogram increase. The
* distance which cause the variogram reach plateau is called range. The sill
* parameter b is the maximum variogram value (by default, we set c = 0).
* <p>
* The parameter c is the so-called nugget effect. Though the value of the
* variogram for h = 0 is strictly 0, several factors, such as sampling error
* and short scale variability, may cause sample values separated by extremely
* small distances to be quite dissimilar. This causes a discontinuity at the
* origin of the variogram. The vertical jump from the value of 0 at the origin
* to the value of the variogram at extremely small separation distances is
* called the nugget effect.
*
* @author Haifeng Li
*/
public class SphericalVariogram implements Variogram {
/** The range parameter. */
private final double a;
/** The sill parameter. */
private final double b;
/** The nugget effect parameter. */
private final double c;
/**
* Constructor. No nugget effect.
* @param a the range parameter.
* @param b the sill parameter.
*/
public SphericalVariogram(double a, double b) {
this(a, b, 0.0);
}
/**
* Constructor.
* @param a the range parameter.
* @param b the sill parameter.
* @param c the nugget effect parameter.
*/
public SphericalVariogram(double a, double b, double c) {
if (a <= 0)
throw new IllegalArgumentException("Invalid parameter a = " + a);
if (b <= 0)
throw new IllegalArgumentException("Invalid parameter b = " + b);
if (c < 0)
throw new IllegalArgumentException("Invalid parameter c = " + c);
this.a = a;
this.b = b;
this.c = c;
}
@Override
public double f(double r) {
if (a <= r)
return c + b;
double p = r / a;
return c + b * (1.5 * p - 0.5 * p * p * p);
}
@Override
public String toString() {
return String.format("Spherical Variogram(range = %.4f, sill = %.4f, nugget effect = %.4f)", a, b, c);
}
}

View File

@ -0,0 +1,24 @@
/*
* Copyright (c) 2010-2020 Haifeng Li. All rights reserved.
*
* Smile is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation, either version 3 of
* the License, or (at your option) any later version.
*
* Smile is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with Smile. If not, see <https://www.gnu.org/licenses/>.
*/
package org.meteoinfo.math.interpolate.variogram;
import org.meteoinfo.math.Function;
public interface Variogram extends Function {
}