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