|
Finn |

Forum-Anfänger
|
 |
Beiträge: 21
|
 |
|
 |
Anmeldedatum: 28.11.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 13.02.2013, 13:59
Titel: Indexing
|
 |
Hallo,
ich würde gern bei einer 3D-Matrizen-Kalkulation den Index als Variable in der Formel verwenden.
Bei Igor Pro geht das mit p, q und r.
Zum Beispiel so: W4[p][q]=min(p,q)
Wie funktioniert das bei Matlab?
W4(:,:)=min( ???)
Schöne Grüße,
Finn
|
|
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 13.02.2013, 15:20
Titel: Re: Indexing
|
 |
Hallo Finn,
Da ich mit Igor Pro nicht vertraut bin, verstehe ich nicht, wonach Du genau suchst.
"Matrizen" haben laut Definition 2 Dimensionen, um genau zu sein suchst Du also nach einem "3D-Array". Wenn Du aber 3 Dimensionen hast, benötigst Du auch 3 Indizes. Ich kann mir kaum vorstellen, dass das in Igor Pro anders sein kann.
Die Methoden zur Indizierung sind in den Getting Started Kapiteln der Dokumentation umfassen erklärt. Es bringt nicht viel, dies hier nachzuerzählen. Deshalb ist das Lesen der Dokumentation nur wärmstens zu empfehlen.
Gruß, Jan
|
|
|
Finn |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 21
|
 |
|
 |
Anmeldedatum: 28.11.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 13.02.2013, 15:49
Titel:
|
 |
Hallo Jan,
es geht mir nicht um die dritte Dimension, ich habe mich wohl nicht eindeutig ausgedrückt. Ich möchte den Index als Variable in der Formel nutzen. Darüber habe ich leider nichts im getting started finden können.
Vielleicht ist folgendes Beispiel anschaulicher:
A(:)=Index
Dies sollte dann Werte für A von 1;2;3;4; etc. ergeben.
Schöne Grüße,
Finn
|
|
|
Sirius3 |

Forum-Guru
|
 |
Beiträge: 441
|
 |
|
 |
Anmeldedatum: 12.11.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 13.02.2013, 19:47
Titel:
|
 |
Hallo Fin,
in Matlab brauchst Du einen Vektor, der die Indizes enthält:
Grüße
Sirius
|
|
|
Seban |

Forum-Meister
|
 |
Beiträge: 600
|
 |
|
 |
Anmeldedatum: 19.01.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ab R2014b
|
 |
|
|
 |
|
Verfasst am: 13.02.2013, 19:56
Titel:
|
 |
Ich versteh das auch nicht so ganz, muss ich zugeben.
W4[p][q]=min(p,q)
Sind p & q ein Index-Paar oder je ein Index aus der Matrix W4?
Sagen wir du hast A = [ 1 4 6; 8 3 5; 8 1 7]
Möchtest du bspw. A(2, 1) verwenden und dann auch dessen Index (2, 1) in der Berechnung verwenden? Und für A(3, 3) den Index (3, 3)? Oder doch die Indizes 2 für A(2, 1) und 9 für A(3, 3)?
Wenn du im Code A(i, j) verwenden würdest, kannst du ja auch mit den Indizes i und j arbeiten. Das hat Jan, denk ich, mit dem Verweis auf Getting Started gemeint. Oder hast du im Code bspw. A(2, 3) und möchtest jetzt quasi die Indizes auslesen?
Grüße,
Seban
_________________
Richtig fragen
Debugging
|
|
|
Finn |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 21
|
 |
|
 |
Anmeldedatum: 28.11.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 14.02.2013, 14:39
Titel:
|
 |
Hallo,
danke vielmals für die Ratschläge!
Also mit Sirius' Vorschlag bekomme ich das nun schon mal in 1D hin. Aber wenn ich es in 2bzw. 3D versuche, gibt es leider eine Fehlermeldung.
So funktioniert es bei mir in 1D:
>>
stack=[3];
i=1:3;
stack(i)=i;
>>
Ergibt wie gewünscht: stack = 1,2,3
Und so funktioniert es in 2D leider nicht:
>>
stack=[3,3];
i=1:3;
j=1:3;
stack(i,j)=i+j;
>>
Das sollte theoretisch ergeben:
2,3,4
3,4,5
4,5,6
Was stimmt an dem Code für die 2D-Variante nicht, bin ich denn blind?
Letztendlich brauche ich das, um die Distanz jedes Bildpunktes zum Rand des Datenstacks zu berechnen, was theoretisch mit folgender Zeile zu bewerkstelligen wäre:
>>
p=1:xdim
q=1:ydim
r=1:zdim
distance2border(p,q,r)=min(min(min(p*xres,(xdim-p)*xres),min(q*yres,(ydim-q)*yres)),min(r*zres,(zdim-r)*zres));
>>
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 15.02.2013, 00:35
Titel:
|
 |
Hallo Finn,
Zitat: |
stack=[3];
i=1:3;
stack(i)=i; |
Was soll "stack = [3]" bewirken? Die drei Zeilen lassen sich vereinfachen zu:
Für den 2D-Fall:
Für den 3D-Fall benötigst Du noch "permute(1:3, [1,3,2])".
Gruß, Jan
|
|
|
Finn |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 21
|
 |
|
 |
Anmeldedatum: 28.11.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 15.02.2013, 14:36
Titel:
|
 |
Hallo zusammen,
also ich denke, dass es die Funktionalität nach der ich suche bei Matlab einfach nicht gibt. Aber es ist nicht so schlimm, weil ich das Ausgangsproblem jetzt anders (mit bwdis)) gelöst habe.
Nur nochmal zur Erklärung, falls es jemanden interessiert wie das bei Igor Pro funktioniert:
Folgender Code ...
>>
wave stack(3,3,3) // erstelle Stack mit Dimensionen 3x3x3
stack[][][]=p+q+r //
>>
ergibt in Igor:
012
123
234
p, q und r sind dabei keine 3-dimensionalen Vektoren, sondern schlicht Variablen für die drei Indizes.
Bei einer Matrix-Berechnung durchläuft das Programm dann ja nacheinander alle Index-Kombinationen für die x, y und z Dimension (p,q und r in Igor)
000
100
200
010
020
etc.
In Igor kann man die Werte der jeweiligen Index-Kombination während die Berechnung läuft auslesen und in die Berechnung einbeziehen. Das ist glaube ich einfach ein anderes System.
Vielen Dank nochmal und schöne Grüße,
Finn
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2025
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.
|
|