注意陣列大小的變化
MATLAB 中的一些常見操作(如差分或積分 )輸出的結果具有與輸入資料不同的元素數量。這個事實很容易被忽視,這通常會導致像 Matrix dimensions must agree
這樣的錯誤。請考慮以下示例:
t = 0:0.1:10; % Declaring a time vector
y = sin(t); % Declaring a function
dy_dt = diff(y); % calculates dy/dt for y = sin(t)
假設我們想要繪製這些結果。我們來看看陣列大小,看看:
size(y) is 1x101
size(t) is 1x101
但:
size(dy_dt) is 1x100
陣列是一個更短的元素!
現在假設你有一段時間的位置測量資料並且想要計算 jerk(t)
,你會得到一個小於時間陣列的陣列 3 個元素(因為這個位置被區分 3 次)。
vel = diff(y); % calculates velocity vel=dy/dt for y = sin(t) size(vel)=1x100
acc = diff(vel); % calculates acceleration acc=d(vel)/dt size(acc)=1x99
jerk = diff(acc); % calculates jerk jerk=d(acc)/dt size(jerk)=1x98
然後操作如下:
x = jerk .* t; % multiplies jerk and t element wise
返回錯誤,因為矩陣尺寸不一致。
要計算上述操作,你必須調整較大的陣列大小以適應較小的陣列。你還可以使用資料執行迴歸(polyfit
)以獲取資料的多項式。
尺寸不匹配錯誤
尺寸不匹配錯誤通常在以下情況下出現: