gpt4 book ai didi

matlab - 如何比较多个向量(不同大小)中的元素?

转载 作者:太空宇宙 更新时间:2023-11-03 19:54:28 24 4
gpt4 key购买 nike

我在 Matlab 中有三个向量,它们的大小可能不同。我想将每个向量中的值与其他向量中的所有其他值进行比较,并且只保留 3 个向量中的 2 个中“接近”的值。 “保持”是指取收盘值的平均值。

例如:

a = [10+8i, 20];
b = [10+9i, 30, 40+3i, 55];
c = [10, 60, 41+3i];

如果我设置了一个接近公差,以便只保留彼此相差 1.5 的值,则应将以下值标记为接近:

  • 10 + 8i 和 10 + 9i
  • 40 + 3i 和 41 + 3i

然后例程应返回一个长度向量,其中包含每组数字的平均值:

finalVec = [10+8.5i,40.5+3i];

在 Matlab 中最有效的方法是什么?有没有比直接遍历所有元素更好的方法?

最佳答案

基于 this solution :

a = [10+8i, 20];
b = [10+9i, 30, 40+3i, 55];
c = [10, 60, 41+3i];

M1 = compare_vectors(a , b);
M2 = compare_vectors(a , c);
M3 = compare_vectors(b , c);
finalVec = [M1, M2 , M3]


function M = compare_vectors(a , b)

% All combinations of vectors elements
[A,B] = meshgrid(a,b);
C = cat(2,A',B');
D = reshape(C,[],2);

% Find differences lower than tolerance
tolerance = 1.5
below_tolerance = abs(D(:,1) - D(:,2)) < tolerance ;

% If none, return empty
if all(below_tolerance== 0)
M = [];
return
end

% Calculate average of returned values
M = mean(D(below_tolerance,:));

end

关于matlab - 如何比较多个向量(不同大小)中的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49382863/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com