WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Funktion

 

jan1111

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.01.2012, 13:55     Titel: Funktion
  Antworten mit Zitat      
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

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 08.01.2012, 15:30     Titel: Re: Funktion
  Antworten mit Zitat      
Hallo jan1111,

Wenn ich Deine Frage genau lese, geht das ohne FOR-Schleifen, mämlich gar nicht:
Code:
x = 1:1000;
y = 1:1000;
a = 0:20;
b = 0:20;
N = norm([x y]' - [a,b]');   % ERROR

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
Private Nachricht senden Benutzer-Profile anzeigen
 
jan1111

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.01.2012, 19:45     Titel: Funktion
  Antworten mit Zitat      
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

Forum-Anfänger


Beiträge: 34
Anmeldedatum: 14.11.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.01.2012, 11:38     Titel:
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
jan1111

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.01.2012, 12:25     Titel: Funktion
  Antworten mit Zitat      
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

Forum-Anfänger


Beiträge: 34
Anmeldedatum: 14.11.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.01.2012, 13:05     Titel:
  Antworten mit Zitat      
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:

Code:

x   =repmat(0:1000,[1001 1]);
y   =x';
for i=1:a
for j=1:b
     ['solution_',num2str(i),'_',num2str(j)]=sqrt((x-a).^2+(y-b)'.^2);
end
end
 


In diesem Fall habe ich die 2Norm die Matlab standardmäßig verwendet einfach explizit aufgeführt.

gruß Pinky
Private Nachricht senden Benutzer-Profile anzeigen
 
jan1111

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.01.2012, 21:35     Titel: Funktion
  Antworten mit Zitat      
Danke!
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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 | goMatlab RSS Button 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.