|
jan1111 |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 08.01.2012, 13:55
Titel: Funktion
|
 |
Hallo zusammen,
ich schreibe gerade ein Programm in Matlab, bei dem ich die Funktion norm([x y]'-[a,b]') für x=1:1000 und y=1:1000 sowie a=0:20 und b=0:20 auswerten muss. Wie kann ich das mit möglichst wenigen Schleifen realisieren?
Vielen Dank schonmal!
|
|
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 08.01.2012, 15:30
Titel: Re: Funktion
|
 |
Hallo jan1111,
Wenn ich Deine Frage genau lese, geht das ohne FOR-Schleifen, mämlich gar nicht:
Die Matrix-Dimensionen im Argument von NORM passen nicht zusammen.
Was möchtest Du also genau berechnen? Es ist immer hilfreich, wenn Du postest, was Du bereits gemacht hast.
Gruß, Jan
|
|
|
jan1111 |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 09.01.2012, 19:45
Titel: Funktion
|
 |
Hallo,
mit norm([x y]' - [a,b]'); meinte ich, dass ich immer ein Element des Vektors x, ein Element des Vektors y, ein Element des Vektors a und ein Element des Vektors b nehme und insgesamt alle Möglichkeiten betrachte. [x y]' und [a b]' sollen also beides Vektoren des Länge 2 sein.
Wie kann ich das implementieren, falls ich for-schleifen benutze.
|
|
|
Pinky |

Forum-Anfänger
|
 |
Beiträge: 34
|
 |
|
 |
Anmeldedatum: 14.11.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 10.01.2012, 11:38
Titel:
|
 |
Hallo,
ich bin mir nicht wirklich sicher was du da genau meinst, aber vom logischen Standpunkt aus würde ich die schleifen immer über die kleinsten Parameterbereiche laufen lassen. In deinem Fall wären das jeweils die 21 punkte von a und b.
Wenn du x als nx1 und y als 1xn Vektor schreibst solltest du bei matrixmultiplikation alle produkte erhalten. Vielleicht kannst du das ja in deine Funktion einbauen.
gruß Pinky
|
|
|
jan1111 |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 10.01.2012, 12:25
Titel: Funktion
|
 |
Hallo,
vielen Dank für die schnelle Antwort. Mein Programm soll in norm([x y]' - [a,b]') alle möglichen Kombinationen einsetzen, d. h. als erstes norm([0 0]'-[0 0]'), dann norm([0 0]'-[0 1]'), norm([0 0]'-[0 2]'), norm([0 0]'-[0 3]'), ..., norm([0 0]'-[1 0]'), ..., norm([0 1]'-[0 0]'), ..., usw.
Wie kann ich das implementieren?
|
|
|
Pinky |

Forum-Anfänger
|
 |
Beiträge: 34
|
 |
|
 |
Anmeldedatum: 14.11.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 10.01.2012, 13:05
Titel:
|
 |
Hallo,
ich denke, das einfachste wäre über eine doppelte Loop. Als erstes ist die Frage welche Norm du genau brauchst. Du hast 2 Vektoren brauchst du
a. Norm(X-Y) oder b. Norm(X)-Norm(Y)
ersteres wäre leicht zu implementieren:
In diesem Fall habe ich die 2Norm die Matlab standardmäßig verwendet einfach explizit aufgeführt.
gruß Pinky
|
|
|
jan1111 |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 10.01.2012, 21:35
Titel: Funktion
|
 |
|
|
|
|
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.
|
|