MATLAB中实现平均降采样

        近期处理数据,想对数据进行降采样,但是发现matlab自带的downsample函数只能隔几个点取一个点来实现N倍降采样,但是有些情况下使用平均降采样可能效果更为稳定,于是在此基础上编写了平均降采样的函数如下:

function [y] = mean_downsample(x,N)
%UNTITLED 在matlab中实现平均降采样
%   x:原始信号,格式为1*n的行向量
%   y:平均降采样后的信号
%   N:降采样的倍数,即降采样后频率=降采样前频率/N
%   作者:张亦弛       2023/5/31
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%   x = 1:1000;N=4;   % 示例数据
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
downdata = zeros(1,size(x,2)/N);  % 建立空数组存放降采样后的和
for phase = 0:N-1   % 偏置从0取到N-1
    temp = downsample(x,N,phase);  % N倍降采样,偏移phase个点进行
    downdata = downdata + temp;  % 累加N次降采样后的结果
end
y = downdata/N;  % 平均累加结果,得到平均降采样的值
end

使用方法和之前的downsample函数一样,x为输入信号,N为降采样倍数,y为降采样后的信号

ctrlCV的小伙伴看到这就结束了,复制上面的代码用就好了

简单说一下想法思路(大佬不要笑),科研小白记录生活

利用降采样的偏移,进行N次降采样,每次的偏移不同以保证所有数据都被采样到,再对这N次采样的数据相加并平均,就得到了每个点都是平均降采样的数据y

你可能感兴趣的:(matlab,开发语言)