Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   
Bücher:

Studierende:
weitere Angebote

Partner:


Vermarktungspartner


Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Vektorisierung

 

dreisson
Forum-Anfänger

Forum-Anfänger


Beiträge: 42
Anmeldedatum: 09.10.07
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.02.2008, 15:08     Titel: Vektorisierung
  Antworten mit Zitat      
Hallo,

Ich habe folgendes Programm
Code:

for ii=1:Nsim
    for i=1:M
         temp(1:M,1)=A(1:M,i); % A ist (M x M)- und temp ist (M x 1)- Matrix
         x=abs(temp')*abs(temp); % x in diesem Fall skalar
         K(ii,i)=sqrt(x);   % K ist eine (Nsim x M)-Matrix
     end
end
 


das obere Code habe ich wie folgt umprogrammiert:

Code:

for ii=1:Nsim
temp = abs(A).^2; % temp ist genau so gross wie A: (M x M)
    x=sum(temp);% x ist in diesem Fall ein (1 x M)-Vektor oder?!
    K(ii,:)=x ;
end
 


meine Frage ist ob ich das Programm richtig umprogrammiert habe oder nicht?
Falls es richtig ist, ist das eine gute Lösung oder gibts bessere bzw schnellere Lösungen?

Grüsse
Dreisson
Private Nachricht senden Benutzer-Profile anzeigen


nschlange
Ehrenmitglied

Ehrenmitglied



Beiträge: 1.311
Anmeldedatum: 06.09.07
Wohnort: NRW
Version: R2007b
     Beitrag Verfasst am: 27.02.2008, 00:36     Titel:
  Antworten mit Zitat      
Zitat:
meine Frage ist ob ich das Programm richtig umprogrammiert habe oder nicht?


Kommt denn das selbe raus?
Da wär es wohl richtig Wink
_________________

Viele Grüße
nschlange

"Chuck Norris ejakuliert fluessigen Stahl!"
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Bijick
Ehrenmitglied

Ehrenmitglied



Beiträge: 914
Anmeldedatum: 18.06.07
Wohnort: Nürnberg
Version: R2006b, R2008b
     Beitrag Verfasst am: 27.02.2008, 12:26     Titel:
  Antworten mit Zitat      
Hallo dreisson,

bis auf das vergessene Wurzelziehen im letzten Schritt ist Deine Version richtig. Ob sie auch schneller ist als die vorherige, hängt von der Größe von M ab. Ob die Initialisierung (zeros) sinnvoll ist, hängt von M und Nsim ab. Du kannst ja mal in diesem Code verschiedene M und Nsim ausprobieren und die Zeiten vergleichen. K, K2 und mein Vorschlag K3 haben jeweils die gleichen Werte.

Code:
clear
M = 9;
Nsim = 9;
A = magic(M);

tic
K=zeros(Nsim,M); % Testweise mal weglassen
for ii=1:Nsim
    for i=1:M
        temp(1:M,1)=A(1:M,i); % A ist (M x M)- und temp ist (M x 1)- Matrix
        x=abs(temp')*abs(temp); % x in diesem Fall skalar
        K(ii,i)=sqrt(x); % K ist eine (Nsim x M)-Matrix
    end
end
t1=toc

tic
K2=zeros(Nsim,M); % Testweise mal weglassen
for ii=1:Nsim
    temp2 = abs(A).^2; % temp ist genau so gross wie A: (M x M)
    x2=sum(temp2);% x ist in diesem Fall ein (1 x M)-Vektor oder?!
    K2(ii,:)=sqrt(x2);
end
t2=toc

tic
K3 = repmat(sqrt(sum(abs(A).^2)),Nsim,1);
t3=toc


Herzliche Grüße
Bijick
_________________

>> why
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
dreisson
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 42
Anmeldedatum: 09.10.07
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.02.2008, 13:21     Titel:
  Antworten mit Zitat      
Hallo Bijick,
danke für die Antwort. Echt verfluchter Fehler: Ich fragte mich die ganze Zeit warum kleine abweichen in meinen Ergebnissen gibt, und das war wegen diesem vergessenen "sqrt".
Ich habe dein Vorschlag ausprobiert für M=16 und Nsim=30000.
Mit initalisierung von K und K2:
t1=6,375s
t2=221e-3 s
t3=5,26e-3 s

Also dein Vorschlag mit repmat finde ich sehr gut und man braucht keine Initialisierung.
Ohne Intialierung von K und K2 ist t1 fast =t2 =ca188s. Dadurch wird anscheinend t3 beinflusst 10e-3 s.

für Das Hauptprogramm was ich mache zählt wirklich jede millisekunde, die ich sparen kann.

Danke viel mals
Private Nachricht senden Benutzer-Profile anzeigen
 
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
.


goMatlab ist ein Teil des goForen-Labels
goForen.de goMATLAB.de goLaTeX.de


 Impressum  | Nutzungsbedingungen  | Datenschutz  | Werbung/Mediadaten | Studentenversion | FAQ | goMatlab RSS Button RSS


Copyright © 2007 - 2019 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
Partner: LabVIEWforum.de

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.