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

Punktsetzung nach Variable???

 

JimKnopf
Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 01.11.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.05.2010, 21:48     Titel: Punktsetzung nach Variable???
  Antworten mit Zitat      
Hallo,

bei der Programmierung in Matlab habe ich so meine Probleme mit der Punktsetzung in einer Formel. Wann muss ich nach einer Variablen einen Punkt setzen?

In dem unten aufgeführten Beispiel ist wz eine Variable welche von z abhängt. Also ein Array und nach einem Array soll ja ein Punkt gesetzt werden. Oder? Bei mir ist das in Moment eher "Try and Error".

I=1;
[x,y] = meshgrid(linspace(-10,10,100), linspace(-10,10,100));
In = I * (w0./wz).^2 * (exp(-2*(x.^2+y.^2)/wz.^2));
surf(x,y,In)

Wäre toll wenn mir jemand weiterhelefen könnte.

Gruß
Jim Knopf
Private Nachricht senden Benutzer-Profile anzeigen


Epfi
Forum-Meister

Forum-Meister



Beiträge: 1.134
Anmeldedatum: 08.01.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.05.2010, 22:23     Titel:
  Antworten mit Zitat      
Der Punkt gehört nicht zur Variablen, sondern zu den Operatoren.

* ist das Skalarprodukt zweier Vektoren, bzw. das Matrixprodukt
*. ist eine Elementweise Multiplikation. Also Element 1 aus dem ersten Vektor wird mit Element 1 aus dem zweiten Vektor multipliziert und ergibt Element 1 im Ergebnisvektor, usw...

Das Selbe gilt für ./ und .^
Private Nachricht senden Benutzer-Profile anzeigen
 
JimKnopf
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 01.11.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.05.2010, 19:29     Titel:
  Antworten mit Zitat      
Hallo,

danke für die schnelle Hilfe aber ich hab noch immer so meine Problem. Also:

In = I * (w0./wz).^2 * (exp(-2*(x.^2+y.^2)/wz.^2));

w0 = Konstante
wz = Array
x, y = Array

Meiner Meinung nach müsste dann nur noch hinter die Klammer (x.^2+y.^2) ein Punkt. Also:

In = I * (w0./wz).^2 * (exp(-2*(x.^2+y.^2)./wz.^2));

Aber es funktioniert noch immer nicht....

Sorry aber ich steh gerade mit beiden Beinen auf der Leitung...

Gruß
Stephan
Private Nachricht senden Benutzer-Profile anzeigen
 
MatLabNooB
Forum-Guru

Forum-Guru


Beiträge: 262
Anmeldedatum: 27.03.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.05.2010, 19:38     Titel:
  Antworten mit Zitat      
Code:
In = I * (w0/wz).^2 .* (exp(-2*(x.^2+y.^2)./wz.^2))
vielleicht?
Private Nachricht senden Benutzer-Profile anzeigen
 
JimKnopf
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 01.11.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.05.2010, 19:44     Titel:
  Antworten mit Zitat      
Leider auch nicht.
Private Nachricht senden Benutzer-Profile anzeigen
 
Epfi
Forum-Meister

Forum-Meister



Beiträge: 1.134
Anmeldedatum: 08.01.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.05.2010, 19:52     Titel:
  Antworten mit Zitat      
Nochmal: der Punkt steht -wenn er denn steht- vor dem Operator, nicht hinter der Klammer.

Nun zur Frage, ob ein Punkt stehen muss, oder nicht: nein, muss nicht. Du teilst eine Matrix durch einen Skalar, da muss kein Punkt stehen. Es wird jedes Element der Matrix durch den Skalar geteilt - das Ergebnis ist dann wieder eine Matrix der selben Größe (hier: size(x)).
Wenn Du lust hast, kannst Du vor dem / trotzdem einen Punkt schreiben, das ändert nichts.

Kurz:
* -> Matrixprodukt (siehe Wikipedia)
.* -> elementweise Multiplikation:
C(i, j) = A(i, j) * B(i, j). Sprich, der Eintrag links oben in C ist das Produkt aus den Einträgen links oben in A und B usw.

/, \ -> Matrixdivision (kennt die deutsche Wikipedia nicht, die englische schon)
./ -> Elementweise Division zweier Matrizen:
C(i, j) = A(i, j) / B(i, j). Wie bei der Multiplikation.

Wenn der zweite Operand ein Skalar ist, sind ./ und / bzw. .* und * das Selbe.
Private Nachricht senden Benutzer-Profile anzeigen
 
MatLabNooB
Forum-Guru

Forum-Guru


Beiträge: 262
Anmeldedatum: 27.03.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.05.2010, 19:53     Titel:
  Antworten mit Zitat      
Code:
I = 1;
w0 = 1;
wz = rand(5);
x = rand(5);
y = rand(5);

In = I * (w0./wz).^2 * (exp(-2*(x.^2+y.^2)./wz.^2));

gibt bei mir keinen fehler...
Private Nachricht senden Benutzer-Profile anzeigen
 
JimKnopf
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 01.11.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.05.2010, 20:11     Titel:
  Antworten mit Zitat      
Vielleicht habe ich doch an einer ganz anderen Stelle ein Problem. Im Anhang findet ihr mein M-file. Wenn ihr noch die Muse habt schaut es euch mal an.

Gruß

Intensverteilung.m
 Beschreibung:

Download
 Dateiname:  Intensverteilung.m
 Dateigröße:  580 Bytes
 Heruntergeladen:  734 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
MatLabNooB
Forum-Guru

Forum-Guru


Beiträge: 262
Anmeldedatum: 27.03.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.05.2010, 20:39     Titel:
  Antworten mit Zitat      
das prob liegt daran, dass wz ein Vektor ist, weiss zwar grad nicht pb ich das jetzt so peile aber versuch mal
Code:
[z1 z2] = meshgrid(linspace(-5,5,5));
z = z1 + z2;
Private Nachricht senden Benutzer-Profile anzeigen
 
JimKnopf
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 01.11.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.05.2010, 19:09     Titel:
  Antworten mit Zitat      
Hallo,

vielen Dank für eure Hilfe. Der Fehler lag darin, wie ihr schon geschrieben habt, dass wz ein Array war und eine andere Größe hatte wie die für x und y. Konnte also gar nicht passen.

Wobei wz sowieso hätte konstant sein müssen.

Gruß
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 - 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.