J’ai essayé de tracer cette expression dans matlab mais je continue à avoir l’avertissement: Grade déficient, rang = 0, tol = NaN Message d'erreur.
t = 1:1:14;
n1 = 3.43-2.30i;
lamda = 1550*1e-9;
R = abs((1i*((1/n1)-n1)*sin(2*pi*n1*t/lamda))/(2*cos(2*pi*n1*t) + 1i*(1/n1) +n1)*sin(2*pi*n1*t/lamda)))^2;
figure
plot(t,R)
xlabel("Number of graphene layers")
ylabel("Reflectivity")
J'essaie d'obtenir quelque chose de similaire à ce complot. S'il vous plaît, pouvez-vous m'aider à résoudre ce problème? Désolé, je suis toujours un débutant pour MATLAB.
Je vous remercie
Réponses:
0 pour la réponse № 1L'erreur exacte que vous obtenez est due à deux choses
- L'utilisation incorrecte d'opérations de matrice au lieu d'opérations de type "tableau"
- Le fait que
sin(ix)
croît de façon exponentielle, de sorte que les arguments que vous passez àsin
reviendraInf
(comme le feracos()
).
Opérations élémentaires
le x / y
L’opérateur appliqué aux vecteurs est interprété par MATLAB comme une tentative de résolution de A
dans le système A * x = y
.
Remplacer /
avec ./
pour obtenir la division élémentaire des vecteurs, dont vous aurez besoin dans votre expression pour R
.
De même, utiliser .^
pour obtenir l'opérateur exposant élément par élément.
Il existe une documentation sur la différence entre les opérateurs "array" et "matrix":
https://au.mathworks.com/help/matlab/matlab_prog/array-vs-matrix-operations.html
Croissance exponentielle du péché (ix)
Pour calculer votre formule, un réarrangement est nécessaire pour éviter de calculer des termes très longs qui finissent par s’annuler. Multipliez le haut et le bas de la fraction par sin(2*pi*n1*t/lambda)
et vous trouvez que:
th = 2*pi*n1*t/lambda;
R = abs((n1 - 1/n1) ./ (2*cot(th) + 1i*(n1 + 1/n1))).^2;
fait le tour compte tenu de vos entrées. Cependant, les chiffres ne correspondent pas à l'intrigue que vous fournissez.
R =
Columns 1 through 13:
0.44933 0.44933 0.44933 0.44933 0.44933 0.44933 0.44933 0.44933 0.44933 0.44933 0.44933 0.44933 0.44933
Column 14:
0.44933
Je suggère que vous
- Vérifiez les unités pour la formule, assurez-vous que vos entrées sont dans les unités correctes et
- Vérifiez la formule que vous avez donnée pour
R_1