2014-10-27 118 views
-2

我有一個設定點的矩陣,分成10個組(下面的例子)。每組點對應一條線;我如何繪製所有線?在Matlab中繪製一組線條

這裏的矩陣是如何組織的一個例子:

y = [ 
109.41 110.55 111.69 112.83 113.96 115.10 116.24 117.37 118.51 119.65 
56.87 56.21 55.55 54.89 54.23 53.57 52.91 52.25 51.5 50.92 
-265.16 -263.07 -260.99 -258.90 -256.81 -254.73 -252.64 -250.55 -248.47 -246.38 ]; 

這是我使用來產生矩陣,並嘗試繪製的所有行的代碼:

for line = (1:n) 
    for point = (1:10) 
     y(line,point) = [Y(line)-point*sin(Omega(line))]; 
    end 
end 

plot(0:1000,y,'linewidth',2) 
+0

我編輯了這個問題,添加了我現在使用的代碼。 – 2014-10-27 14:39:51

+0

請儘量不要在Matlab中使用'i'和'j'作爲變量名稱(http://stackoverflow.com/questions/14790740/using-i-and-j-as-variables-in-matlab) ,尤其是['j * sin()'](http://en.wikipedia.org/wiki/Euler's_formula)可能會引起誤導...... – Shai 2014-10-27 14:45:33

+0

'n'是什麼?什麼是'Y'和'Omega'它們與你在問題開始時發佈的10x3數字有什麼關係?請花點時間編輯你的問題,使其明智。 – Shai 2014-10-27 14:47:13

回答

1

我並不感到驚訝,你得到的錯誤與你使用的代碼有關。 size(0:1000)1x1001。什麼尺寸是你的矩陣y

與您所提供的數據,我會用以下內容:

y = [109.41 110.55 111.69 112.83 113.96 115.10 116.24 117.37 118.51 119.65; ... 
56.87 56.21 55.55 54.89 54.23 53.57 52.91 52.25 51.5 50.92; ... 
-265.16 -263.07 -260.99 -258.90 -256.81 -254.73 -252.64 -250.55 -248.47 -246.38]; 

plot(0:100:900,y,'linewidth',2) % size(0:100:900) is 1x10 and size(y) is 3x10 so we're good 

此給出以下結果(在八度,應在MATLAB完全一樣):

enter image description here

1

假設Y大小爲1 -by- n,Omega的大小爲1 -,則可以避免嵌套循環:

y = bsxfun(@minus, Y, bsxfun(@times, (1:10)', sin(Omega))); %' 
plot(1:n, y, 'LineWidth', 2);