Matlab:两个不同大小的数组之间的区别
Matlab: Difference bettween two different sized arrays
是否可以找到两个不同大小的数组之间的差异?
我的问题是我有两个数组,缩放比例非常相似,我需要每个点的误差。
数据是这样的:-
偏航数据比偏航参考大得多
您可以采用一种非常天真的方法,只需填充引用数组的每个元素。这很简单:
n = length(yaw)/length(yaw_ref);
yaw_ref_pad = zeros(length(yaw), 1);
for j = 1:length(yaw_ref)-1
yaw_ref_pad((n*j):(n*(j+1)) = yaw_ref(j);
end
您还可以做一些更具适应性的事情,这可能是您想要的,也可能不是您想要的。这种方法使用导数来确定填充参考应该切换到哪里。这可能被认为有点循环,因为您的系统看起来像一个过阻尼的 PID 系统,并且它使用输出作为输入的种子。
yaw_ref_pad = zeros(length(yaw), 1);
[x, peaks] = findpeaks(diff(yaw));
for j = 1:length(peaks)-1
yaw_ref_pad(peaks(j):peaks(j+1)) = yaw_ref(j);
end
无论哪种方式,在填充 yaw_ref_pad
之后,您的结果就是
error = yaw_ref_pad - yaw;
是否可以找到两个不同大小的数组之间的差异?
我的问题是我有两个数组,缩放比例非常相似,我需要每个点的误差。
数据是这样的:-
偏航数据比偏航参考大得多
您可以采用一种非常天真的方法,只需填充引用数组的每个元素。这很简单:
n = length(yaw)/length(yaw_ref);
yaw_ref_pad = zeros(length(yaw), 1);
for j = 1:length(yaw_ref)-1
yaw_ref_pad((n*j):(n*(j+1)) = yaw_ref(j);
end
您还可以做一些更具适应性的事情,这可能是您想要的,也可能不是您想要的。这种方法使用导数来确定填充参考应该切换到哪里。这可能被认为有点循环,因为您的系统看起来像一个过阻尼的 PID 系统,并且它使用输出作为输入的种子。
yaw_ref_pad = zeros(length(yaw), 1);
[x, peaks] = findpeaks(diff(yaw));
for j = 1:length(peaks)-1
yaw_ref_pad(peaks(j):peaks(j+1)) = yaw_ref(j);
end
无论哪种方式,在填充 yaw_ref_pad
之后,您的结果就是
error = yaw_ref_pad - yaw;