注意阵列大小的变化
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
)以获取数据的多项式。
尺寸不匹配错误
尺寸不匹配错误通常在以下情况下出现: