我有一个脚本,以24小时为单位,以分钟为单位绘制风速,单位为m / s(每秒测量一次)。我想制作一个新的情节,而不是每秒绘制风速,在10分钟内平均风速,然后将其与时间进行对比。
以下是我的数据的示例图片:
关于我如何做到这一点的任何想法?
答案 0 :(得分:4)
您可以使用m.s.建议的smooth
功能使用移动平均线滤镜。在评论中。这很简单:
y = smooth(x,span);
这使用对称平滑滤波器,因此跨度(即平滑所需的样本数)必须为奇数:在当前样本之后加上当前样本加n
和n
之后。这样你每秒仍然有一个样本,它们只是平滑以减少噪音和测量误差。
如果您想减少点数,例如每10分钟只存在一个点,您可以执行以下操作:您获取向量的第一个10min * 60s = 600
样本并将它们放在第一列中一个新的矩阵。然后取下600个样品并将它们放入第二列,依此类推。现在,您可以按列方式取矩阵的均值。这样你就有了一个新的向量,其中每个元素都是600个样本的平均值。
在MATLAB中,这很容易实现:
X = reshape(x,600,[]); % create matrix with 600 elements per column
y = mean(X,1); % take column-wise mean