|
|
Wo ist der Fehler in der Formel? |
|
DPA |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 22.01.2013, 15:15
Titel: Wo ist der Fehler in der Formel?
|
 |
|
 |
|
Hallo allerseits,
ich bin recht neu in Matlab und versuche gerade eine Formel in Matlab zu realisieren.
Ich möchte die Matrix r erhalten.
Die einzelnen Werte erhält man indem man sie mit der darüberstehenden Formel ausrechnet. Diese Formel muss ich programmieren, allerdings komme ich momentan nicht weiter und ich bin mir auch recht sicher, dass ich es das einem sehr umständlichen Weg mache, deshalb bitte ich um Tipps zur optimierung. Das ganze soll so schnell wie möglich gerechnet werden.
Was ich bisher habe:
Momentan geh ich so vor, dass ich erstmal den Teil über dem Bruchstrich berechnet (oben), dann die beiden Teile unter dem Bruchstriche (unten1 und unten2)
Diese rechne ich dann am Ende zusammen um so auf die Matrix r zu kommen.
D ist 1000
T ist 100000
K ist 256
Traces entspricht der Matrix t im Bild und ist 1000x100000 groß
hypHW entspricht der Matrix h im Bild und ist 1000x256 groß
r ist 256x100000 groß.
Momentan habe ich einen Fehler in der Zeile mit dem Kommentar "***" Hier kommt "??? Index exceeds matrix dimensions." Allerdings verstehe ich nicht warum.
Gibt es sonst noch Optimierungsmöglichkeiten die das ganze schneller und vor allem übersichtlichen machen?
Danke schonmal und Gruß
PS.: Das ganze soll übrigens der Korrelationskoeffizient sein. Es gibt zwar mehrere fertige Funktionen die diesen berechnen, allerdings weiss ich nicht wie ich da die Parameter für meinen Fall richtig eingebe, falls das überhaupt geht. Das würde das ganze jedenfalls ziemlich einfacher machen.
|
|
|
|
|
Sirius3 |

Forum-Guru
|
 |
Beiträge: 441
|
 |
|
 |
Anmeldedatum: 12.11.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 22.01.2013, 22:42
Titel:
|
 |
warum schreibst Du Traces(j,:) und nicht Traces(:,j) ?
double ist in 99.9% der Fälle (chars mal ausgenommen) überflüssig, weil Matlab defaultmäßig mit doubles rechnet, es sei denn Du gibst explizit etwas anderes an.
ungetestet:
Wenn es nicht auf anhieb funktioniert, trotzdem versuchen zu verstehen.
|
|
|
DPA |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 23.01.2013, 14:45
Titel:
|
 |
Ok danke schonmal,
Ja stimmt, das mit Traces war ein Fehler.
Zu dem Double.
In der Zeile
hab es hier ohne double immer Probleme. Eine zahl wurde zu double konvertiert, die andere zu int. Und die linke Seite, das x1, war auch Int. Das führte zu falschen Ergebnissen.
Danke schonmal
|
|
|
DPA |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 28.01.2013, 13:29
Titel:
|
 |
Hier ist schon das erste Problem:
wenn Zeile
ausgeführt wird, kommt immer
"??? Error using ==> minus
Integers can only be combined with integers of the same class, or scalar doubles."
|
|
|
|
|
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.
|
|