定义窗口以找到多个斜坡

时间:2014-12-14 07:09:38

标签: matlab math

我需要为可以找到斜率的实验图定义几个窗口。例如,x从0到400运行。我想找到每个50x的导数(即0到50,50到100等),然后平均所有导数(在这个例子中为8个导数)。谢谢你的帮助!

1 个答案:

答案 0 :(得分:0)

假设您有一个y测量值的矢量,并希望通过获取条目1和50,51和100之间的差异来计算导数,依此类推,您可以执行以下操作:

% generate a signal
x=1:400;
y = x.^2;
nSamples = length(y);

% define number of segments and window size
N = 8;      
Winsize = ceil(nSamples/N);

% preallocate the vector of slopes and compute the slopes
slopes = zeros(1,N);
for ii=1:N
    slopes(ii) = (y(min(nSamples,Winsize*ii))-y(1+Winsize*(ii-1)))/(x(min(nSamples,Winsize*ii))-x(1+Winsize*(ii-1)));
end

% take the average slope value
Averageslope = mean(slopes);

然而,既然你正在使用matlab,你也可以只取矢量的平均导数,在处理噪声数据时应该产生更准确的平均值:

% generate a signal
x=1:400;
y = x.^2;
slope = mean(diff(y)/diff(x));