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

3D Darstellung mit 2 Variablen

 

Phil24

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.05.2008, 09:54     Titel: 3D Darstellung mit 2 Variablen
  Antworten mit Zitat      
Hi.

Ich habe folgendes MATLAB skript zur Berechnung einer Funktion.
In dieser Funktion sind 2 Parameter (n und R), welche den Graphen S bestimmen. S ist ein Streumuster. L ist eine Messwertmatrix und Q ist ein Funktionswert, der aus der Differenz von S und L berechnet wird.
Nun möchte ich den Wert Q für VARIABLE n und R berechnen und das Resultat als 3D Plot darstellen. Wie kann ich die festen Parameter im Nachhinein als Variablen für die 3D Darstellung einführen?
Danke im Voraus!

Phil

S=zeros(1,315);
r=zeros(1,315);
x=(1:150);
R=0.000001;%Radius
l=0.000000514;%Wellenlaenge
z=2*pi*R/l;
N=1.5;%Brechungsindex 1
n=1.4;%Brechungsindex 2
for r=0:314
t=.01*r;
y=(((n*besselj(x,n*z)*0.5.*(besselj(x-1,z)-besselj(x+1,z)))-.5*(besselj(x-1,n*z)-besselj(x+1,n*z)).*besselj(x,z))./...
(-n*besselj(x,n*z).*((n*besselh(x,1,z))/z-besselh(x+1,1,z))+.5*(besselj(x-1,n*z)-besselj(x+1,n*z)).*besselh(x,1,z))).*cos(x*t);
A=((n*besselj(0,n*z)*0.5.*(besselj(-1,z)-besselj(1,z)))-.5*(besselj(-1,n*z)-besselj(1,n*z)).*besselj(0,z))./...
(-n*besselj(0,n*z).*((n*besselh(0,1,z))/z-besselh(1,1,z))+.5*(besselj(-1,n*z)-besselj(1,n*z)).*besselh(0,1,z));
B=sum(y);
C=A+2*B;
D=abs(C);
E=D^2;
S(r+1)=l*E/(pi*pi);
end
plot(S)

Q=(sqrt((sum(S-L).^2))/315)/(sum(S)/315)


tompie
Forum-Guru

Forum-Guru


Beiträge: 260
Anmeldedatum: 19.09.07
Wohnort: München
Version: immer alles
     Beitrag Verfasst am: 07.05.2008, 10:12     Titel:
  Antworten mit Zitat      
Hallo,

mach einfach eine function draus, die Du mit den gewünschten Parametern aufrufen kannst. Außerdem würde ich noch ein flag übergeben, um zu entscheiden, ob S geplottet wird oder nicht:

Code:
function Q = calcQ(n,R,flag)

S=zeros(1,315);
r=zeros(1,315);
x=(1:150);

l=0.000000514;%Wellenlaenge
z=2*pi*R/l;
N=1.5;%Brechungsindex 1

for r=0:314
t=.01*r;
y=(((n*besselj(x,n*z)*0.5.*(besselj(x-1,z)-besselj(x+1,z)))-.5*(besselj(x-1,n*z)-besselj(x+1,n*z)).*besselj(x,z))./...
(-n*besselj(x,n*z).*((n*besselh(x,1,z))/z-besselh(x+1,1,z))+.5*(besselj(x-1,n*z)-besselj(x+1,n*z)).*besselh(x,1,z))).*cos(x*t);
A=((n*besselj(0,n*z)*0.5.*(besselj(-1,z)-besselj(1,z)))-.5*(besselj(-1,n*z)-besselj(1,n*z)).*besselj(0,z))./...
(-n*besselj(0,n*z).*((n*besselh(0,1,z))/z-besselh(1,1,z))+.5*(besselj(-1,n*z)-besselj(1,n*z)).*besselh(0,1,z));
B=sum(y);
C=A+2*B;
D=abs(C);
E=D^2;
S(r+1)=l*E/(pi*pi);
end

if flag==1,
plot(S)
end;

Q=(sqrt((sum(S-L).^2))/315)/(sum(S)/315)


Dein bisheriges Ergebnis solltest Du dann mit

Code:
Q = calcQ(1.4,0.000001,1)


reproduzieren können.

Gruß tompie
Private Nachricht senden Benutzer-Profile anzeigen
 
Phil24

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.05.2008, 13:21     Titel:
  Antworten mit Zitat      
Ich bekomme da folgende Fehlermeldung

??? Strings passed to EVAL cannot contain function declarations.
 
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.