xmatrix4.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "xmatrix3.h"
4 #include <iostream>
5 
6 namespace nmx::gsl::mat {
7 
12 template<class T>
13 struct IRowColumnsViews : public IGslContainer<T, gsl_matrix, 5> {
14  // benutze Elementfunktionen der Basisklasse
16 
22  Vector::View row_view(size_t n) { //
23  return Vector::View(gsl_matrix_row(gsl(), n));
24  }
25 
31  Vector::View column_view(size_t n) { return Vector::View(gsl_matrix_column(gsl(), n)); }
32 
40  Vector::View sub_row_view(size_t i, size_t offset, size_t n) {
41  return Vector::View(gsl_matrix_subrow(gsl(), i, offset, n));
42  }
43 
51  Vector::View sub_column_view(size_t i, size_t offset, size_t n) {
52  return Vector::View(gsl_matrix_subcolumn(gsl(), i, offset, n));
53  }
54 };
55 
59 template<class T>
60 struct IRowColumns : public IGslContainer<T, gsl_matrix, 10> {
61  // benutze Elementfunktionen der Basisklasse
63 
69  gsl::Vector row(size_t n) const {
70  //lese die Anzahl der Spalten über die von dieser Komponenten
71  // abgeleitete Klasse
72  size_t clmns = static_cast<const T *>(this)->columns();
73  //erzeuge leeren Vektor mit vorgegebener Länge
74  Vector vout(clmns);
75  //kopiere Reihe
76  gsl_matrix_get_row(vout.gsl(), gsl(), n);
77  return vout;
78  }
79 
85  gsl::Vector column(size_t n) const {
86  //lese die Anzahl der Reihen über die von dieser Komponenten
87  // abgeleitete Klasse
88  size_t rows = static_cast<const T *>(this)->rows();
89  //erzeuge leeren Vektor mit vorgegebener Länge
90  Vector vout(rows);
91  //kopiere Spalte
92  gsl_matrix_get_col(vout.gsl(), gsl(), n);
93  return vout;
94  }
95 
102  void set_column(const gsl::Vector &v, size_t n) { //
103  gsl_matrix_set_col(gsl(), n, v.gsl());
104  }
105 
112  void set_row(const gsl::Vector &v, size_t n) { //
113  gsl_matrix_set_row(gsl(), n, v.gsl());
114  }
115 };
116 
117 } // namespace nmx::gsl::mat
const gsl_vector * gsl() const
gsl ermöglicht direkten Zugriff auf gsl-Funktionen
Definition: xvector.h:192
void set_row(const gsl::Vector &v, size_t n)
set_row Reihe wird den Elementen eines Vektors gleichgesetzt
Definition: xmatrix4.h:112
Vector::View sub_row_view(size_t i, size_t offset, size_t n)
sub_row_view Sicht auf Reihe einer Matrix
Definition: xmatrix4.h:40
gsl::Vector column(size_t n) const
column Kopie einer Spalte
Definition: xmatrix4.h:85
The IRowColumns struct Kopien von Spalten und Reihen erzeugen.
Definition: xmatrix4.h:60
The IRowColumns struct erzeugt Sichten auf Reihen und Spalten einer Matrix.
Definition: xmatrix4.h:13
Vector::View row_view(size_t n)
row_view Sicht auf eine Reihe
Definition: xmatrix4.h:22
void set_column(const gsl::Vector &v, size_t n)
set_column Spalte wird den Elementen eines Vektors gleichgesetzt
Definition: xmatrix4.h:102
gsl::Vector row(size_t n) const
row Kopie einer Reihe erzeugen
Definition: xmatrix4.h:69
Vector::View column_view(size_t n)
column_view erzeugt eine Sicht auf eine Spalte
Definition: xmatrix4.h:31
Vector::View sub_column_view(size_t i, size_t offset, size_t n)
sub_column_view Sicht auf Spalte einer Matrix
Definition: xmatrix4.h:51
const gsl_matrix * gsl() const
ermöglicht direkten Zugriff auf gsl-Funktionen
Definition: xvector0.h:18
The Vector class Klasse für gsl-Vektoren zussamengesetzt aus Komponenten.
Definition: xvector.h:76
The VView class Klasse für Sichten zusammengesetzt aus Komponenten.
Definition: xvector.h:29
The IGslContainer struct Basisklasse für gsl-Vektoren und Matrizen.
Definition: xvector0.h:13