2017-10-20 28 views
0

Je suis nouveau chez Matlab et j'essaye de tracer la fonction Y pour chaque valeur de X. Pour cela, j'ai utilisé les codes ci-dessous. L'écran de la figure s'ouvre mais il n'y a rien sur l'écran.La commande Tracer ne montre rien

>> X = [0:0.001:0.04] 
>> for i=1:40 
Y = 6113 * cos(2*pi*200*X(i) + 1508); 
end 
>> plot(Y,X) 

Et j'ai aussi essayé cela.

>> X = [0:0.001:0.04] 
>> for i=1:40 
Y = 6113 * cos(2*pi*200*X(i) + 1508); 
>> plot(Y,X) 
end 

Comment puis-je résoudre ce problème? Merci,

Répondre

2

Les premières choses d'abord.

JollyRoger réponse est correcte, cependant, laissez-nous voir ce que vous faites mal. Vous essayez de tracer Y vs X.

plot(Y,X) 

Cependant votre X est un vecteur alors Y est un scalaire. De plus, vous devez inverser la commande comme X est votre variable indépendante

plot(X,Y) 

Alors, que pouvez-vous faire pour Y un vecteur d'information pour chaque X tenant -Value? Vous devez enregistrer pour chaque entrée:

for k=1:40 
Y(k) = 6113 * cos(2*pi*200*X(k) + 1508); 
end 

d'abord la Y variable est index et devient un vecteur. Comme vous le voyez, j'ai changé votre variable d'index en k car i est aussi le nombre complexe.

Si vous essayez de tracer cette plot(X,Y), vous obtiendrez une erreur X et Y dont ont la même longueur, X a plus de valeurs. Donc, vous devez adapter la commande du terrain:

plot(X(1:40),Y) 

Si vous voulez Y avoir la même quantité de valeurs que X vous devez faire la boucle aussi longtemps que votre vecteur X,

for k=1:length(X) 
Y(k) = 6113 * cos(2*pi*200*X(k) + 1508); 
end 
plot(X,Y) 

Pour finir, essayez de pré-allouer vos variables avant de les utiliser dans une boucle for pour améliorer le temps d'exécution du code. par exemple:

Y=zeros(size(X)); 
for k=1:length(X) 
Y(k) = 6113 * cos(2*pi*200*X(k) + 1508); 
end 
plot(X,Y) 
0

Je viens de trouver comment faire cela. J'ai essayé le code ci-dessous et cela a fonctionné:

>> Y = 6113 * cos(2*pi*200*X + 1508); 
>> plot(Y,X)