Forum: PC-Programmierung geht das auch effizienter in Matlab?


von Sepp Obermair (Gast)


Lesenswert?

Hallo liebes Forum,

kann man folgenden Ausdruck in matlab  auf effizienter ausführen?
1
for k=1:1:size(CD,1)                                                       
2
   NORMCD(k) = norm(CD(k,:));                                               
3
end

Ich meine speziell ob sich die Schleife durch Matrixoperationen ersetzen 
lässt.

Viele Grüße Sepp

von Sepp Obermair (Gast)


Lesenswert?

Zur Erklärung

NORMCD ist ein Vektor der Dimension n

CD ist eine Matrix der Dimension n x m

von Klaus T. (gauchi)


Lesenswert?

Wenn es eine 2-Norm ist: müsste das nicht mit

CD2 = CD .* CD

norm2CD = sum(CD2, 2)
normCD = sqrt(norm2CD)

gehen?

ich bin mir über die syntax von sum nicht sicher, aber ich meine, dass 
man da eine dimension angeben kann

von Sepp Obermair (Gast)


Lesenswert?

Danke, werd ich mir morgen gleich anschauen!

von Michael L. (Gast)


Lesenswert?

Hallo,

als Beispiel nehme ich:

Z = [1,2,3; 4,5,6];

Die Komponenten des gesuchten Vektors lauten dann:

sqrt(1^2+2^2+3^2) = sqrt(14) = 3.7417
sqrt(4^2+5^2+6^2) = sqrt(77) = 8.775

Folgendermaßen kannst Du rechnen:
sqrt(sum(Z.*Z,2));

.* bedeutet komponentenweise Multiplikation
,2 bei der Summe bedeutet, daß die Summation über die Zeilen erfolgt

Gruß,
  Michael

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.