Community Tip - Have a PTC product question you need answered fast? Chances are someone has asked it before. Learn about the community search. X
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
Solved! Go to Solution.
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:
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
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:
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.