|
|
for schleife mit index fehler |
|
hugo60000 |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 21.02.2014, 23:02
Titel: for schleife mit index fehler
|
 |
Guten Abend,
ich möchte in Matlab gerne folgende Formel berechnen:
T(y[a,b]) =sqrt( (1/m*n)*(sum_i sum_j (y[a,b] - y[a-i,b+1]).^2))
wobei y meine Matrix mit der Größe a,b ist. Angegangen bin ich das ganze mal so (bin leider nicht recht weit gekommen)
jetzt bekomme ich immer den Fehler
??? Subscripted assignment dimension mismatch.
Error in ==>
T(a,b) = sqrt(sum(y_(a,b) - y(a-i,b+1)).^2/(m*n));
Abgesehen von der Fehlermeldung, ich hab jetzt nur eine Summe in der formel stehen, da ich ja jeweils eine Schleife über i und j habe. Ist das Richtig so, oder muss in matlab die zweite Summe genauso angeschrieben werden, wie es in der Originalformel ist. Bzw. gibt es eine Methode, das ganze auch ohne for-Schleife zu lösen?
wäre toll, wenn mir von euch wer weiterhelfen könnte. Danke.
Ciao
|
|
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 21.02.2014, 23:35
Titel:
|
 |
Hallo,
was mich hier verwundert: wieso definierst du m und n als Vektoren?
Wendest du bei der Definition von i und j bewusst : auf Vektoren an?!
In der Formel gibt es keine Abhängigkeit von j. Beabsichtigt?
Grüße,
Harald
|
|
|
Gast |
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 22.02.2014, 00:55
Titel:
|
 |
Hallo,
sorry, die Formel sollte
T(y[a,b]) =sqrt( (1/m*n)*(sum_i sum_j (y[a,b] - y[a-i,b+j]).^2))
heißen.
m und n definiere ich als vektoren, damit ich diese als index verwenden kann, weil ich ja y(a-i, b+j) berechnen und wenn ich keine vektoren definiere bekomme ich eine Fehlermeldung:
??? Subscript indices must either be real positive integers or logicals.
T(a,b) = sqrt(sum(y_(a,b) - y(a-i,b+1)).^2/(m*n));
ciao
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 22.02.2014, 10:52
Titel:
|
 |
Hallo,
T soll also eine Matrix derselben Größe wie y sein?
Sind m und n in der Formel die Anzahl der Zeilen bzw. Spalten?
Laufen die Summen i und j dann von 1 bis m bzw. n?
Versuche es doch zunächst mal mit for-Schleifen (es sollten nach meinem Verständnis vier ineinandergeschachtelt sein). Dann kannst du überlegen, wie du die for-Schleifen eliminieren kannst.
Grüße,
Harald
|
|
|
Gast |
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 22.02.2014, 12:16
Titel:
|
 |
hallo,
genau T sollte die gleiche Größe haben, wie die ursprüngliche Matrix y(a,b). m und n sind die Anzahl der Zeilen und Spalten. m sollte 500 und n 360 sein.
Die summen von i und j laufen von i = -(m-1)/2 bis (m-1)/2 und j = -(n-1)/2 bis (n-1)/2.
wenn ich m = size(y,2) und n = size(y,1) setze bekomme ich als Ergebnis keine ganzen zahlen, um den index in y(a-i, b+j) zu berechnen.
a und b repräsentieren den winkel und die Entfernung, entsprechen also wieder den spalten und zeilen, wenn ich das ganze richtig verstehe.
Ich bin mir jetzt nicht sicher, wie ich die 4er schleife angesehen soll. muss ich a und b ebenfalls in einer schleife definieren?
Bei der Gleichung oben sollte es sich um die Root-Mean-Square-Deviation handeln.
Danke.
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 22.02.2014, 12:41
Titel:
|
 |
Hallo,
Zitat: |
Die summen von i und j laufen von i = -(m-1)/2 bis (m-1)/2 und j = -(n-1)/2 bis (n-1)/2. |
Und wie sollen diese Indizes interpretiert werden? In MATLAB gibt es bekanntlich keine negativen Indizes.
Wenn gemeint ist, dass über alle Elemente gemittelt werden soll, dann wäre doch 1:m bzw. 1:n die logische Alternative?
Zitat: |
Ich bin mir jetzt nicht sicher, wie ich die 4er schleife angesehen soll. muss ich a und b ebenfalls in einer schleife definieren? |
Eine Schleife über a und b dürfte dir jedenfalls so oder so nicht erspart bleiben.
Grüße,
Harald
|
|
|
|
|
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.
|
|