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

Schleife durch Vektor ersetzen

 

Seppel
Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 13.03.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.03.2009, 12:22     Titel: Schleife durch Vektor ersetzen
  Antworten mit Zitat      
Hallo allerseits!

Habe Laufzeitprobleme und möchte aus diesem Grund folgende Schleife durch Vektorrechnungen ersetzen:

Code:
for i=1:NumPoints
        phi(i)=(i-1)*pi/((NumPoints-1)/2);
        psi(i)=k*d*cos(phi(i))+delta+epsilon;
        ArrayFactor(i)=abs( sin(N*psi(i)/2)/sin(psi(i)/2) );
end



Diesen Ansatz habe ich gewählt:

Code:
NumPoint_vec = 1:NumPoints;

phi = (NumPoint_vec-1)*pi/((NumPoints-1)/2);
psi = k*d*cos(phi)+delta+epsilon;
ArrayFactor = abs(sin(N*psi/2)/sin((psi)/2));


phi und psi lassen sich auch wunderbar berechnen. ArrayFaktor jedoch wird als Wert ausgegeben, obwohl ihm psi als Vektor übergeben wird.

Was muss ich anders machen???

Viele Grüße
Sebastian

Edit by Bijick: Code-Umgebung ergänzt. Bitte in Zukunft selbst dran denken (Code-Button mittig über dem Eingabefeld)! Danke Smile
Private Nachricht senden Benutzer-Profile anzeigen


Idefix_1024
Forum-Century

Forum-Century


Beiträge: 230
Anmeldedatum: 16.10.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.03.2009, 12:37     Titel:
  Antworten mit Zitat      
prinzipiell muss man bei Matlab die "Punkt"-Notation bei Vektor-Rechnungen anwenden

[2 3 4] * [2 2 2]' = 18
[2 3 4] .* [2 2 2] = [4 6 8]

ich denke damit müßte das dann besser klappen

bei Division ./ und bei Multiplikation .* verwenden

diese Schreibweise zeigt Matlab, dass es elementweise rechnen soll und keine Matrix oder Vektormultiplikation durchführen soll
Private Nachricht senden Benutzer-Profile anzeigen
 
Seppel
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 13.03.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.03.2009, 15:39     Titel:
  Antworten mit Zitat      
Vielen Dank für die Antwort!

Leider passiert dann genau das Gleiche wie vorher. Es wird immer noch lediglich eine Zahl, satt einem Vektor zurückgegeben. Sad
Private Nachricht senden Benutzer-Profile anzeigen
 
spawnferkel
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 53
Anmeldedatum: 11.03.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.03.2009, 16:05     Titel:
  Antworten mit Zitat      
Wenn k,d,delta,epsilon,N 1x1 groß sind müsste
Code:
ArrayFactor = abs(sin(N*psi/2)./sin((psi)/2));
klappen.
Sonst bitte ein vollständiges Beispiel angeben.
Private Nachricht senden Benutzer-Profile anzeigen
 
Seppel
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 13.03.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.03.2009, 02:19     Titel:
  Antworten mit Zitat      
Super! Hat geklappt! Vielen herzlichen Dank!!! Very Happy
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
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 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.