/ / Avoir un avertissement de matrice de rangs déficients dans MATLAB: Rangement déficient, rang = 0, tol = NaN - matlab, octave, matlab-figure

Avoir un avertissement de matrice de rangs déficients dans MATLAB: Rangement déficient, rang = 0, tol = NaN - matlab, octave, matlab-figure

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.

Modèle mathématique sur lequel je travaille

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

Terrain que j'essaye de réaliser

Réponses:

0 pour la réponse № 1

L'erreur exacte que vous obtenez est due à deux choses

  1. L'utilisation incorrecte d'opérations de matrice au lieu d'opérations de type "tableau"
  2. Le fait que sin(ix) croît de façon exponentielle, de sorte que les arguments que vous passez à sin reviendra Inf (comme le fera cos()).

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