-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathMatrizen_Aufbauen.h
93 lines (84 loc) · 3.82 KB
/
Matrizen_Aufbauen.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
/*
* Matrizen_Aufbauen.h
*
* Copyright (c) 2011-2017 Stefan Bender
* Copyright (c) 2010-2011 Martin Langowski
*
* Initial version created on: 10.06.2010
* Author: Martin Langowski
*
* This file is part of scia_retrieval_2d
*
* scia_retrieval_2d is free software: you can redistribute it or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, version 2.
* See accompanying COPYING.GPL2 file or http://www.gnu.org/licenses/gpl-2.0.html.
*/
//mit diesen Funktionen werden die Matrizen für das Retrieval aufgebaut
// Die Funktion Matrizen_Aufbauen ruft gleich alle diese Funktionen auf einmal
// auf
#ifndef MATRIZZEN_AUFBAUEN_HH_
#define MATRIZZEN_AUFBAUEN_HH_
#include <vector>
#include "MPL_Matrix.h"
#include "MPL_Vektor.h"
void Matrizen_Aufbauen(MPL_Matrix &S_Breite, MPL_Matrix &S_Hoehe,
MPL_Matrix &S_letzte_Hoehe, double Lambda_letzte_Hoehe,
MPL_Matrix &S_apriori, MPL_Matrix &S_y, MPL_Matrix &AMF,
double Lambda_apriori,
class Speziesfenster &Spezies_Fenster,
class Retrievalgitter &Grid,
std::vector<class Ausgewertete_Messung_Limb> &AM_L,
std::vector<class Ausgewertete_Messung_Nadir> &AM_N,
class Konfiguration &Konf, int &IERR);
void generate_Sy(MPL_Matrix &S_y, MPL_Matrix &Saeulendichten_Fehler);
MPL_Matrix Einheitsmatrix_aufbauen(int Dimension);
MPL_Matrix Diagonalmatrix_aufbauen(MPL_Matrix &V);
MPL_Matrix Werte_bei_maximaler_Hoehe_Flagmatrix_Aufbauen(class Retrievalgitter &Grid);
MPL_Matrix Differenz_von_benachbarten_Zeilenelementen_Matrix_aufbauen(int Zeilen, int Spalten);
MPL_Matrix Differenz_von_benachbarten_Spaltenelementen_Matrix_aufbauen(int Zeilen, int Spalten);
MPL_Matrix Luftmassenfaktoren_Matrix_aufbauen(/*MPL_Matrix& Zeilendichten,*/
class Retrievalgitter &Grid,
std::vector<class Ausgewertete_Messung_Limb> &AM_L,
std::vector<class Ausgewertete_Messung_Nadir> &AM_N,
class Konfiguration &Konf, class Speziesfenster &Spezies_Fenster, int &IERR);
//Hilfsfunktionen
//int interpolieren(int n,const double* x_gegebenes_Gitter,
//const double* y_gegebenes_Gitter, x_gesuchter_Wert, double& gesuchter_Wert);
//(funktioniert, wird aber nicht genutzt)
int interpolieren(MPL_Matrix &M, int x_Spalte, int y_Spalte,
double x_Wert_des_gesuchten_Wertes, double &gesuchter_Wert);
int Pixel_finden_und_AMF_erhoehen_LOS(MPL_Matrix &AMF, class Retrievalgitter &Grid,
const int &MessungNr,
int &Pixelnummer,
const double &Schrittlaenge,
const double &Tau_LOS,
const double &Punkt_Hoehe,
const double &Erdradius,
const double &Punkt_Laenge,
const double &Punkt_Breite,
const double &Phasenfunktion,
MPL_Matrix &Tau_LOS_Limb_Matrix);
bool Punkt_Pruefen_und_ggf_AMF_erhoehen(MPL_Matrix &AMF, class Retrievalgitter &Grid,
const int &MessungNr,
const int &PN_Test, int &Pixelnummer,
const double &Schrittlaenge,
const double &Tau_LOS,
const double &Punkt_Hoehe,
const double &Punkt_Breite,
const double &Phasenfunktion,
MPL_Matrix &Tau_LOS_Limb_Matrix);
MPL_Vektor Punkt_auf_Strecke_bei_Radius(MPL_Vektor &Streckenstartpunkt,
MPL_Vektor &Streckenvektor,
double Radius, double Genauigkeit);
void prepare_total_density(class Retrievalgitter &grid, MPL_Matrix &dens,
std::vector<class Ausgewertete_Messung_Limb> &aml_vec);
void SNOE_apriori_NO(class Retrievalgitter &grid,
class Ausgewertete_Messung_Limb &aml, MPL_Matrix &apriori,
class Konfiguration &Konf);
void regression_apriori_NO(class Retrievalgitter &grid,
class Ausgewertete_Messung_Limb &aml, MPL_Matrix &apriori,
class Konfiguration &Konf);
void scale_apriori(class Retrievalgitter &grid, MPL_Matrix &apriori,
class Konfiguration &Konf);
#endif /* MATRIZZEN_AUFBAUEN_HH_ */