2016-07-07 66 views
0

我在一個40×7的雙數據集中有3個數據集,我想將它們相乘並在一段時間內繪製結果。我的問題是如何做到這一點。MATLAB中數據的乘法

我嘗試一直到數據集劃分成數據的3個單獨的細胞,並通過使用操作a=[{A}]等等稱呼他們ABC(每個有40×3)。
接下來,我使用.*a.*b.*ct=[0:40](這是x軸)將它們相互相乘。

我得到以下錯誤,我不知道該怎麼辦。

Index exceeds matrix dimensions

任何人都可以幫助我嗎?


代碼由OP中提供的comment

a = ans(:,1:3); 
b = ans(:,4:6); 
c = ans(:,7:9); 
A[{xyz}]; 
B=[{a}]; 
C=[{c}]; 
t=[0:41]; 
D=(A.*B.*C); 
plot(D,t); 
+0

究竟是什麼錯誤?你能以代碼格式發佈你的代碼嗎?我假設你的數據集是40x9而不是7,或者40x3是40x7的三倍? – KiW

+0

對不起,我的意思是9 –

+0

錯誤是:索引超過矩陣的尺寸。 –

回答

0

所以看你的代碼,它似乎沒有必要從它創建一個細胞: 例如,您可以:

ans=rand(40,9); 
a = ans(:,1:3); b = ans(:,4:6); c = ans(:,7:9); 
D=a.*b.*c; 
t=[1:40]; 
plot(D,t) 

ans=rand(40,9); 
    a = ans(:,1:3); b = ans(:,4:6); c = ans(:,7:9); 
    D=a.*b.*c; 
    t=[0:39]; 
    plot(D,t) 

你的T載體是具有相同長度的inital矩陣 - 你的矩陣具有40行,但您可以通過t=[0:40]創建矢量長41項讓你無論是做t=[1:40]t=[0:39]

,如果t是你的X軸,你應該繪製在正確的順序,以便plot(t,D),而不是要做到這一點是結合reshapepermuteplot(D,t)

+0

嗯,我試過你的代碼,它給出了以下錯誤:使用圖矢量的錯誤必須是相同的長度。 –

+0

你是否改變t爲0:39或t = 1:40? – KiW

+0

對不起,它工作。情節看起來像一團糟,但仍然給予 –

1

的一種方式,走產品沿着第三維度。

假設以下是您的數據。這將是40x9在你的情況。

rows = 4; cols = 6; N = 2; 
x = ceil(10*rand(rows,cols)) 
x = 
    9  6  1  6  5  8 
    6  9  9  5 10  6 
    10  9  7  9  6  3 
    7 10 10  3  9  7 

r = permute(reshape(x, rows, N, []), [3,1,2]) 
result = prod(r,3).' 
result = 
    54  6 40 
    54 45 60 
    90 63 18 
    70 30 63