Bonjour à tous,
J'essaie de tracer une fonction à deux variables f(x,y) sur MATLAB et je n'y arrive pas... J'ai une fonction dont l'expression change en fonction du signe de x, la voici (l et ang sont des paramètres que je ne fais pas varier) :
Je souhaite donc la représentation graphique de d=beam_length(x,y) en 3D. Pour cela je crée ma grille avec meshgrid et ensuite j'applique ma fonction:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 function [d] = beam_length(x,y,l,ang) if x>0 d=sqrt(l^2+(x^2+y^2)+2*l*sqrt(x^2+y^2)*sin(acos(x./sqrt(x^2+y^2))*(1-2*ang/pi))); end if x==0 d=sqrt(l^2+(x^2+y^2)+2*l*sqrt(x^2+y^2)*sin(pi/2*(1-2*ang/pi))); end if x<0 d=sqrt(l^2+(x^2+y^2)+2*l*sqrt(x^2+y^2)*sin((pi-acos(-x./sqrt(x^2+y^2)))*(1-2*ang/pi))); end end
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 [x,y]=meshgrid(-0.5:0.01:0.5); r=beam_length(x,y,1.414,pi/4)Voila donc le problème, je pense qu'il fait le test de signe sur le vecteur x au lieu de le faire sur l'élément mais je n'arrive pas à changer cela.Error in ==> beam_length at 2 if x>0 ??? Output argument "d" (and maybe others) not assigned during call to "beam_length.m (beam_length)".
Merci beaucoup pour votre aide
Partager