2017-10-20 37 views
0

我是Matlab新手,我試圖爲每個X值繪製Y函數。爲此,我使用了下面的代碼。圖屏幕打開,但屏幕上沒有任何東西。Plot命令不會顯示任何東西

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

我也試過這個。

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

我該如何解決這個問題?謝謝,

回答

2

首先第一件事情。

JollyRoger答案是正確的,但是,讓我們看看你做錯了什麼。

您正在嘗試繪製Y vs X

plot(Y,X) 

但是你X是一個載體,而Y是標量。另外,你應該反轉命令X是你的自變量

plot(X,Y) 

那麼你可以做什麼,以使各項X - 值Y如果矢量保持信息?您需要將它保存爲每個條目:

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

首先變量Y的是現在指數,併成爲一個載體。正如你所看到的,我將你的索引變量改爲k,因爲i也是複數。

如果您想嘗試繪製該plot(X,Y),你會得到一個錯誤XY不具有相同的長度,X有更多的價值。所以,你需要適應繪圖命令:

plot(X(1:40),Y) 

如果你想Y有值的相同數量的X你必須做出for循環,只要你的載體X

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

最後要說明的是,在for循環中使用它們之前,嘗試預先分配變量以改善代碼執行時間。例如:

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

我剛剛發現如何做到這一點。我tryed下面的代碼和它的工作:

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