Ich verwende pgfplotstable, um aus einer externen Datei

1 2 3 1 3 2 ...

zu lesen.

Wie kann ich z.B. die komplette 0. und die komplette 1. Zeile auslesen, um daraus eine Matrix

alt text

zu erstellen?

Gibt es dafür eine einfache Methode?

Öffne in Overleaf
\begin{filecontents*}{permutationen.txt}
  1   2   3
  1   3   2
  2   1   3
  2   3   1
  3   1   2
  3   2   1
\end{filecontents*}

%\documentclass[]{article}
\documentclass[border=5mm, varwidth]{standalone}
\usepackage{amsmath}
\usepackage{pgfplotstable}

\begin{document}

% Liste einlesen
\pgfplotstableread{permutationen.txt}{\Perm}
%\pgfplotstableset{header=false}
\pgfplotstablegetrowsof{\Perm}
\pgfmathsetmacro{\rows}{\pgfplotsretval}
\pgfplotstablegetcolsof{\Perm}
\pgfmathsetmacro{\cols}{\pgfplotsretval}
Test: Zeilen: \rows, Spalten: \cols

\pgfplotstablegetelem{1}{2}\of{\Perm}\pgfplotsretval

SOLL:
$\begin{pmatrix} 1& 2 & 3\\ 1 & 3 & 2\end{pmatrix}$,

\end{document}

gefragt 12 Mär '18, 09:55

cis's gravatar image

cis
9.5k74452491
Akzeptiert-Rate: 29%


\gobble braucht man um die Spaltenspezifikationen {ccc} zu schlucken, die für pmatrix nicht von Bedeutung sind.

Öffne in Overleaf
\documentclass{article}
\usepackage{amsmath}
\usepackage{pgfplotstable}

\newcommand\gobble[1]{}

\begin{document}

\pgfplotstableread{
  1   2   3
  1   3   2
  2   1   3
  2   3   1
  3   1   2
  3   2   1
}{\Perm}

$
\pgfplotstabletypeset[
every head row/.style={output empty row},
begin table=\begin{pmatrix}\gobble,
end table=\end{pmatrix},
skip rows between index={2}{99}
]{\Perm}
$

\end{document}

alt text

Permanenter link

beantwortet 12 Mär '18, 11:34

Henri's gravatar image

Henri
15.7k133943
Akzeptiert-Rate: 46%

bearbeitet 12 Mär '18, 12:18

Puh... Warum skip rows between index={1}{99} ?

(12 Mär '18, 11:48) cis

Ohhh... Die Ausgabe ist aber nicht die richtige: Es zeigt einen komischen Header 0 1 2 an. Den versuche ich gerade wegzubekommen. Zum anderen versuche ich gerade zwei beliebige Zeilen, nicht notwendigerweise die ersten beiden, zu verwenden.

(12 Mär '18, 12:02) cis

Das erstere geht mal wieder nur mit Gewalt: every head row/.style={output empty row},

(12 Mär '18, 12:05) cis

Prinzipiell irgendwie so, aber die 0. Permutation (1 2 3 \\ 1 2 3) kriegt man so nicht hin.

% Permutationsmatrix \Nummer <Wert> anzeigen: \pgfmathtruncatemacro{\Nummer}{3} \pgfmathtruncatemacro{\NummerMinusEins}{\Nummer-1} \pgfmathtruncatemacro{\NummerPlusEins}{\Nummer+1} $\pgfplotstabletypeset[every head row/.style={output empty row}, begin table=\begin{pmatrix}\gobble, end table=\end{pmatrix}, skip rows between index={1}{\NummerMinusEins}, skip rows between index={\Nummer}{\rows}, ]{\Perm}$

(12 Mär '18, 12:10) cis

@cis Das mit den Permutationen wurde doch schon in https://texwelt.de/wissen/fragen/21671/pgfmath-permutationen-bestimmen gelöst.

(12 Mär '18, 12:19) Henri

@cis “Das erstere geht mal wieder nur mit Gewalt” Falsch, das ist sogar genau so dokumentiert.

(12 Mär '18, 12:20) Henri

Nene, das geht nicht so sehr darum, diese Permutationsmatrizen anzuzeigen, das ist nur ein Teil von etwas Umfangreicheren. Es geht vielmehr darum, wie ich zwei Zeilen davon auslesen kann, um diese weiterzuverarbeiten.

(12 Mär '18, 12:25) cis
Ergebnis 5 von 7 show 2 more comments
Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×39

gestellte Frage: 12 Mär '18, 09:55

Frage wurde gesehen: 3,273 Mal

zuletzt geändert: 12 Mär '18, 12:25