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

Probleme mit Plot und symbolischen Variablen

 

maekki
Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 16.02.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.05.2011, 13:23     Titel: Probleme mit Plot und symbolischen Variablen
  Antworten mit Zitat      
Hallo, ich will den Verlauf der Intensität eines Laserstrahles unter Berücksichtigung der Absorption berechnen und darstellen. Bei dem Code unten ist es aber so, dass der mittlere Bereich des Plots leer bleibt, wegen "NaN". Ich komme aber einfach nicht drauf, wo ich hier eine "NaN" produziere...


Code:

%Konstanten
lambda = 9.3e-7;
P_las = 17;
P = 0.7 * P_las;
M_square = 1.5;
f = 0.13;
w_linse = 11/2*1e-3;
w_0 = w_linse / sqrt(1+(w_linse^2*pi/(lambda*f))^2);
z_0 = (pi*w_0^2 / lambda) * (1/M_square);
alpha = 0.03;

% Berechnung
syms y z r;
w = w_0 * sqrt(1+(lambda*z/(pi*w_0^2))^2);
I = (2*P / (w^2*pi)) * exp((-2*r^2/w^2) - alpha*heaviside(z));
ezcontourf(I);
 



Danke.
Private Nachricht senden Benutzer-Profile anzeigen


mr_endres
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 78
Anmeldedatum: 11.06.08
Wohnort: Unterfranken
Version: ---
     Beitrag Verfasst am: 26.05.2011, 22:21     Titel:
  Antworten mit Zitat      
Hallo,

ich denke der Fehler passiert beim Plotten der Intensität. Die Funktionswerte bleiben endlich, wie man z.B. mit
Code:

subs(I,[z,r],[0,0]);
 

bei z=0 und r=0 feststellen kann, liegen aber in der Größenordnung 1e11, offenbar kann die automatische Skalierung von "ezcontourf" bzw. "ezsurf" damit nicht umgehen.

Alternativ kannst du auf symbolische Variablen verzichten; definiere dir z.B. die Funktion:
Code:

function I = Plaser(z,r)

lambda = 9.3e-7;
P_las = 17;
P = 0.7 * P_las;
M_square = 1.5;
f = 0.13;
w_linse = 11/2*1e-3;
w_0 = w_linse / sqrt(1+(w_linse^2*pi/(lambda*f))^2);
z_0 = (pi*w_0^2 / lambda) * (1/M_square);
alpha = 0.03;

w = w_0 * sqrt(1+(lambda.*z/(pi*w_0^2)).^2);
I =(2*P ./ (w.^2*pi)) .* exp((-2*r.^2./w.^2) - alpha.*heaviside(z));

end
 

Dann sollte folgender "quick and dirty" Code dir das gewünschte Ergebnis liefern:
Code:

close all; clear all;
N=50;                       %define resolution  
x=linspace(-3e-4,3e-4,N);    
y=linspace(-4e-5,4e-5,N);
[X,Y]=meshgrid(x,y);
Z=Plaser(X,Y);

figure(1);
plot(x,Plaser(zeros(size(x)),x))

figure(2);
surf(x,y,Z);
% shading interp;

figure(3);
contourf(x,y,Z);
 


Aber ja, schon komisch, dass "ezsurf" daran scheitert?!

MfG
Johannes
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.