cancel
Showing results for 
Search instead for 
Did you mean: 
cancel
Showing results for 
Search instead for 
Did you mean: 

Community Tip - Help us improve the PTC Community by taking this short Community Survey! X

filling Matrix with a For Loop

AM_11312647
3-Newcomer

filling Matrix with a For Loop

Hello,

I am quite a beginner, but I cant find useful hints in the internet for my problem.

I wanted to fill a Matrix with values of other Matrices, but the result is strange for me, almost only Zeros?

 

I guess i made something wrong with the local assigning?

i attached the file, and made a screenshot

 

AM_11312647_0-1720648952218.png

ACCEPTED SOLUTION

Accepted Solutions
Werner_E
25-Diamond I
(To:AM_11312647)

Ein Fehler is die Zuweisung F3[3,4 :_ ...

Was immer auch da rechts rauskommt - es wird in der Matrix F3 nur dem Element mit den Indizes 3,4 zugewiesen. Alle anderen Elemente bleiben unverändert und da F3 noch nicht definiert ist, werden diese standardmäßig auf Null gesetzt.

 

Ein weiterer Denkfehler ist vermutlich die Verwendung der lokalen(!) Variablen F3 in dem Programm. Diese hat rein gar nichts mit der Variablen F3 des Arbeitsblattes zu tun, dem das Ergebnis des Programms zugeordnet werden soll. Natürlich darf die lokale den Namen F3 tragen, sie muss aber nicht.

 

Als Ergebnis eines Programms wird immer das Ergebnis des letzten Befehls zurückgegeben (bzw. das, was explizit mit der "return" Anweisung retourniert wird. In ihrem Prgramm ist das der letzte Schleifenbefehl, also das Maximum von F2[3 und F[3,2. Und das st der Wert, den Sie dann in Ihrem Ergebnis an der Stelle 3,4 sehen.

 

Damit die im Programm berechnete lokale Matrix F3 auch als Programmergebnis zurückgegeben wird, muss die letzte Zeile im Programm nach der for -Schleife einfach "F3" lauten oder auch "return F3" ("return" nicht einfach eintippen, sondern so wie die anderen Programmieranweisung der entsprechenden Palette entnehmen).

 

Damit dann die Arbeitsblattvariable F3 zu dieser Matrix wird, muss die linke Seite der Zuweisung einfach nur F3 lauten. Würden Sie sie bei F3[3,4 belassen, würde eine verschachtelte Matrix entstehen, die wieder aus lauter Nullen besteht und nur im rechten unteren Element die berechnete 3x4 Matrix enthält.

 

Sollte also in Summe so aussehen:

Werner_E_0-1720655928177.png

Die Funktionen "max" und "min" akzeptieren auch mehrere, durch Beistriche getrennte Argumente. Es ist also nicht zwingend nötig, hier 1x2 Matrizen zu bilden. Ich habe das in obigem Programm für die erste Zuweisung entsprechend geändert.

 

Ist es eigentlich Absicht, dass von der Matrix F nur die erste und zweite Spalte verwendet wird und da die erste nur einmal je Schleifendurchgang?

 

P.S.: Bei zukünftigen Fragen empfiehlt es sich, anzugeben, welche Prime Version Sie benutzen - vor allem dann, wenn nicht die aktuellste Version benutzt wird. Grund ist, dass die Dateiformate der verschiedenen Prime Versionen nicht kompatibel sind und weder ältere Versionen die Dateien von neueren   Versionen öffnen können, noch eine Version eine Datei im Format einer älteren Version speichern kann.
Wenn Sie also als Antwort auf eine Frage eine Datei im Format der aktuellen Version 10 als Antwort erhalten, können Sie damit nicht viel anfangen, wenn Sie selbst Version 9 verwenden.

 

Die angefügte Datei ist im Format P9

 

View solution in original post

2 REPLIES 2
Werner_E
25-Diamond I
(To:AM_11312647)

Ein Fehler is die Zuweisung F3[3,4 :_ ...

Was immer auch da rechts rauskommt - es wird in der Matrix F3 nur dem Element mit den Indizes 3,4 zugewiesen. Alle anderen Elemente bleiben unverändert und da F3 noch nicht definiert ist, werden diese standardmäßig auf Null gesetzt.

 

Ein weiterer Denkfehler ist vermutlich die Verwendung der lokalen(!) Variablen F3 in dem Programm. Diese hat rein gar nichts mit der Variablen F3 des Arbeitsblattes zu tun, dem das Ergebnis des Programms zugeordnet werden soll. Natürlich darf die lokale den Namen F3 tragen, sie muss aber nicht.

 

Als Ergebnis eines Programms wird immer das Ergebnis des letzten Befehls zurückgegeben (bzw. das, was explizit mit der "return" Anweisung retourniert wird. In ihrem Prgramm ist das der letzte Schleifenbefehl, also das Maximum von F2[3 und F[3,2. Und das st der Wert, den Sie dann in Ihrem Ergebnis an der Stelle 3,4 sehen.

 

Damit die im Programm berechnete lokale Matrix F3 auch als Programmergebnis zurückgegeben wird, muss die letzte Zeile im Programm nach der for -Schleife einfach "F3" lauten oder auch "return F3" ("return" nicht einfach eintippen, sondern so wie die anderen Programmieranweisung der entsprechenden Palette entnehmen).

 

Damit dann die Arbeitsblattvariable F3 zu dieser Matrix wird, muss die linke Seite der Zuweisung einfach nur F3 lauten. Würden Sie sie bei F3[3,4 belassen, würde eine verschachtelte Matrix entstehen, die wieder aus lauter Nullen besteht und nur im rechten unteren Element die berechnete 3x4 Matrix enthält.

 

Sollte also in Summe so aussehen:

Werner_E_0-1720655928177.png

Die Funktionen "max" und "min" akzeptieren auch mehrere, durch Beistriche getrennte Argumente. Es ist also nicht zwingend nötig, hier 1x2 Matrizen zu bilden. Ich habe das in obigem Programm für die erste Zuweisung entsprechend geändert.

 

Ist es eigentlich Absicht, dass von der Matrix F nur die erste und zweite Spalte verwendet wird und da die erste nur einmal je Schleifendurchgang?

 

P.S.: Bei zukünftigen Fragen empfiehlt es sich, anzugeben, welche Prime Version Sie benutzen - vor allem dann, wenn nicht die aktuellste Version benutzt wird. Grund ist, dass die Dateiformate der verschiedenen Prime Versionen nicht kompatibel sind und weder ältere Versionen die Dateien von neueren   Versionen öffnen können, noch eine Version eine Datei im Format einer älteren Version speichern kann.
Wenn Sie also als Antwort auf eine Frage eine Datei im Format der aktuellen Version 10 als Antwort erhalten, können Sie damit nicht viel anfangen, wenn Sie selbst Version 9 verwenden.

 

Die angefügte Datei ist im Format P9

 

Vielen Dank für die Antwort, 

 

gerade mit den lokalen Variablen und mit dem return ergeben auch die Beispiele im internet mehr Sinn. Dass nur die erste und zweite Spalte von F genutzt wird, ist ein flüchtigekkeitsfehler da ich aus meinen Sheet hier einige gekürtzt habe, damit ich an einem einfacheren Beispiel die Struktur verstehe, danke.

Announcements

Top Tags