我需要为可以找到坡度的实验区定义几个窗口。例如,x的范围是从0到400。我想找出每个50x的导数(即0到50,50到100等等),然后求所有导数的平均值(本例中为8个导数)。感谢大家的帮助!
发布于 2014-12-14 22:16:03
假设您有一个测量向量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));https://stackoverflow.com/questions/27467156
复制相似问题