通过平均在 Matlab 中对数据进行下采样
Downsampling data in Matlab by averaging
我在 Matlab 中有 2 个数据集,我需要相互绘制 - 一个在 x 轴上,一个在 ya 轴上。每组的数据是使用不同的方法收集的,因此采样率明显不同,除非我在两组中的数据点数量不同,否则我无法将一个与另一个进行比较。
使用 downsample
Matlab 函数在 Matlab 中对数据进行下采样非常简单。
A = [-3 -1.5 0 1.5 3 4.5 6 7.5 9...] (goes on until 21)
B = [-3.9 -3.8 -3.7 -3.6 -3.5 -3.5 -3.3 -3.2 -3.1 -3.0 -2.9 -2.8...] (goes on until 22)
A的采样率为1.5s,B的采样率为0.1s。我已经能够成功地使用 downsample
作为 downsample(B,15,10)
让它同时开始“-3s”(这意味着我的数据中有一些东西所以我需要让它在那个时候开始)并以1.5s的采样率进行采样。
但是,现在我想知道是否有一种方法可以让我取 15 个点的平均值,而不是每 15 个点取一个点? downsample
,我使用它的方式是每 15 个点选取一次。但是,我希望它为我平均 15 分。有办法吗?
我为 simple/smaller 向量写了一个 for 循环,看看我是否能做到。对于 A = [1 2 3 4]
我想压缩数据以便 A 只有 2 个条目,这样它平均 A(1) 和 A(2) 然后 A(3) 和 A(4)。
A = [1 2 3 4]
for i = 1:3
P(i) = mean(A(i:i+1))
end
然而,这并不像我想要的那样工作,因为我不希望它平均 A(2) 和 A(3)。我希望它采用前 2 个条目,对它们进行平均,然后对接下来的 2 个条目进行平均。很快。
有人可以帮忙吗?
谢谢
将数据 A
重塑为 n
行矩阵,其中 n
是平均大小,并应用 mean
计算每列的平均值:
A = [1 2 3 4]; %// data
n = 2; %// averaging size
P = mean(reshape(A,n,[]));
我在 Matlab 中有 2 个数据集,我需要相互绘制 - 一个在 x 轴上,一个在 ya 轴上。每组的数据是使用不同的方法收集的,因此采样率明显不同,除非我在两组中的数据点数量不同,否则我无法将一个与另一个进行比较。
使用 downsample
Matlab 函数在 Matlab 中对数据进行下采样非常简单。
A = [-3 -1.5 0 1.5 3 4.5 6 7.5 9...] (goes on until 21)
B = [-3.9 -3.8 -3.7 -3.6 -3.5 -3.5 -3.3 -3.2 -3.1 -3.0 -2.9 -2.8...] (goes on until 22)
A的采样率为1.5s,B的采样率为0.1s。我已经能够成功地使用 downsample
作为 downsample(B,15,10)
让它同时开始“-3s”(这意味着我的数据中有一些东西所以我需要让它在那个时候开始)并以1.5s的采样率进行采样。
但是,现在我想知道是否有一种方法可以让我取 15 个点的平均值,而不是每 15 个点取一个点? downsample
,我使用它的方式是每 15 个点选取一次。但是,我希望它为我平均 15 分。有办法吗?
我为 simple/smaller 向量写了一个 for 循环,看看我是否能做到。对于 A = [1 2 3 4]
我想压缩数据以便 A 只有 2 个条目,这样它平均 A(1) 和 A(2) 然后 A(3) 和 A(4)。
A = [1 2 3 4]
for i = 1:3
P(i) = mean(A(i:i+1))
end
然而,这并不像我想要的那样工作,因为我不希望它平均 A(2) 和 A(3)。我希望它采用前 2 个条目,对它们进行平均,然后对接下来的 2 个条目进行平均。很快。
有人可以帮忙吗?
谢谢
将数据 A
重塑为 n
行矩阵,其中 n
是平均大小,并应用 mean
计算每列的平均值:
A = [1 2 3 4]; %// data
n = 2; %// averaging size
P = mean(reshape(A,n,[]));