Matrix hat zu viele Spalten<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Warum kann JNK nicht mehr als 128 Spalten verarbeiten? oops meine ich JMP.
Mein Skript:
PrintMatrix (Index (1, 129))
Protokollausgabe:
Matrix hat zu viele Spalten für den Zugriff oder die Auswertung von 'Print Matrix', Bad Argument (Index (1, 129)), Print Matrix / * ### * / (Index (1, 129)).
Fehler im folgenden Skript mit / * ### * / markiert
Matrix drucken / * ### * / (Index (1, 129))
Ich mag die Fähigkeit der PrintMatrix-Funktion, eine Matrix in einen String zu formatieren, damit ich sie in eine Datei schreiben kann. Mein tatsächlicher Anwendungsfall ist eine Matrix mit der gleichen Anzahl von Zeilen und Spalten - hier nur ein einfaches Beispiel.
Aktualisieren:
Danke für die guten Vorschläge, aber um meinen Anwendungsfall zu erweitern:
Ich habe eine Bildgröße von 1024x1024 Pixeln:
image_mat = Shape (Index (1, 1024 ^ 2), 1024, 1024);
und mit diesem einfachen Liner habe ich Tabulatoren zwischen jedem Intensitätswert UND einem Zeilenvorschubzeichen anstelle eines Tabulators nach dem letzten Wert jeder Zeile:
printed_mat_for_save = PrintMatrix (image_mat, << style ("other"), << Zeilenanfang (""), << Zeilenende (""), << separate ("\! t"));
Und dann kann ich alles, was ich brauche, einschließlich einiger Header, in einen anderen Liner schreiben.
SaveTextFile (name_of_savefile, concat (header_for_save, "\! N") Printed_mat_for_save )
Vielleicht gibt es einige Alternativen zum Durchlaufen einer Million Werte, um sie zu markieren und eine Registerkarte hinzuzufügen, außer der letzten Spalte einer Zeile, die einen Zeilenvorschub erhält.
Re: Matrix hat zu viele SpaltenFRAU. Du warst fast da. Hier ist mein Endergebnis, um die benötigte Formatierung zu erhalten. Danke, dass Sie mich in die richtige Richtung weisen, aber der Ersatz fühlt sich langsamer an als eine for-Schleife. Und so wie ich es mit for loop gemacht habe, kann ich die Breite und Anzahl der Dezimalstellen angeben.
Mit Ersatzmethode:
numpixels = 1024;image_mat = Shape(Index(1, numpixels^2), numpixels, numpixels);string_mat_with_tabs = Substitute(Char(image_mat), ", \!r\!n\!t", "\!n", " ", "\!t", "\!r\!n[\!t", "", "]", "" );
Brute Force für Loops:
numpixels = 1024;image_mat = Shape(Index(1, numpixels^2), numpixels, numpixels);char_maxwidth = 10;char_num_decimals = 6;string_mat_with_tabs = "";for( iii = 1, iii <= nrows(image_mat), iii++, each_row = AsList(image_mat[iii, 1::numpixels])[1]; string_row = ""; for( jjj = 1, jjj < nitems(each_row), jjj++, ConcatTo(string_row, char(each_row[jjj], char_maxwidth, char_num_decimals), "\!t"); ); ConcatTo(string_row, char(each_row[jjj], char_maxwidth, char_num_decimals), "\!n"); // last col gets new line ConcatTo(string_mat_with_tabs, string_row); // add string_row to the main guy);
Re: Matrix hat zu viele Spalten Ersatz() ist ziemlich effizient. Versuchen Sie etwas so:
image_mat = Gestalten ( Index ( 1 . 1024 ^ 2 ) . 1024 . 1024 ) ;
Printed_mat_for_save = Ersatz ( Verkohlen ( image_mat ) . "," . "" . "" . "\! t" ) ;
Textdatei speichern ( "my_matrix.txt" . Printed_mat_for_save ) ;
Betreff: Matrix hat zu viele Spalten<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />PrintMatrix ist für hübsches Drucken. Ich bin mir nicht sicher, warum die Breite begrenzt ist. Sie können verwenden char (Matrix) wenn Sie eine nicht so hübsche Zeichenfolge verwenden können.

Betreff: Matrix hat zu viele Spalten<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Ich weiß nicht, warum es eine Grenze für gibt Matrix drucken .
Probieren Sie die Verkohlen() Funktion stattdessen.
Textdatei speichern ( "my_matrix.txt" , Verkohlen ( Index ( 1 , 128 ))) ;;