gpt4 book ai didi

python - 逻辑: In a 2D data find and remove duplicates and average the y axis results

转载 作者:行者123 更新时间:2023-11-30 21:23:02 24 4
gpt4 key购买 nike

这是我在这个论坛上的第一个问题。我在主题行中提到了逻辑,因为我不是在寻找特定的编程语言。如果有人能指出逻辑问题以及如何在没有任何内置函数的情况下实现它,我将不胜感激。

描述:我有一个二维数据,它是来自一些实验室实验的 x 轴和 y 轴值。实际数据要大得多。我假设现场人员向我提供了排序列表的数据。现在我只是在这种情况下简化了它。第一个任务是删除重复项,以便最终结果为 x = [1.5,2.4],任务 2 是合并相应的 y 值,使得新的 y = [(10+20)/2, (30+ 40)/2] = [15,35]。我得到的输出是

z =1.50000 2.40000z1 =15 25

所以,问题 1:z 返回正确的列表,但前提是我有一组重复项。如果列表中的数字重复两次以上,例如 [1,1,1,2,2,2],则此操作失败。问题2:很明显我的平均逻辑是错误的。

因此,如果你们能指出我哪里出错了,以及是否有更好的方法来解决整个问题,我将不胜感激。谢谢。

clc
x1 = [1.5,1.5,2.4,2.4];
y = [10,20,30,40];

x = sort(x1);

n = length(x);

for i = 1:n
for j = i+1:n
if x(j) == x(i)
for k = j:n-1
num = 1;
x(k) = x(k+1);
Add = y(k-1)+y(k);
num = num +1;
y(k-1) = Add/num;
end
n = n-1;
j = j-1;
else

end
end
end

for i=1:n
z(i) = x(i);
z1(i) = y(i);
end
z
z1

最佳答案

嗯,让我们看看...您已排序 x但不是y ;你想将它们排序在一起,Matlab 有一个 sortrows可以做到这一点的函数 if xy组成矩阵的列。所以你想先这样做,然后再拆包。

现在循环逻辑:您想要跟踪 x 有多少个唯一值到目前为止你已经找到了当前值x的拷贝数量到目前为止你已经看到了。不用问你就知道这些都是 1处理第一行后。这很好,因为第一个元素不太适合我们的循环结构,因此我们可以将其从循环中排除。

现在,在循环体中,我们要做的第一件事是比较 x 的当前值。 , x(i) ,使用先前的值 x(i-1) 。比较浮点值是否相等有点偶然,所以我们在这里尝试了模糊比较。

如果它们比较相等,那么我们还没有找到 x 的任何更多唯一值但是我们当前值的字符串已经变长了 1,因此我们更新了该信息。

如果它们不相等,那么我们就以之前的唯一值 x 完成了运行。 ,所以我们把之前的值 x , x(i-1) ,在 x 的唯一值中的位置并平均前一个 current y 的值并将这个平均值放在y中的相应位置大批。

完成此操作后,我们知道我们找到了又一个唯一值 x以及当前运行的当前值 x 的重复项从 1 开始,因此我们更新 unique 的值和current来反射(reflect)这些事实。完成后,我们只需完成因用完x而中止的运行。值,然后砍掉 xy数组减少到找到的唯一值的数量。

在我看来,对于初学者来说,这确实是一项艰巨的任务。

% bump.m

x1 = [1.5,2.4,1.5,2.7,1.5];
y1 = [10,30,20,40,50];

A = sortrows([x1' y1'])';

x = A(1,:);
y = A(2,:);

unique = 1;
current = 1;

for i = 2:length(x),
if abs(x(i)-x(i-1)) < 100*eps(abs(x(i))+abs(x(i-1))),
current = current+1
else
x(unique) = x(i-1);
y(unique) = sum(y(i-current:i-1))/current;
unique = unique+1;
current = 1;
end
end
x(unique) = x(end);
y(unique) = sum(y(end-current+1:end))/current;
x = x(1:unique)
y = y(1:unique)

关于python - 逻辑: In a 2D data find and remove duplicates and average the y axis results,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48735910/

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