Cómo determinar automáticamente dónde gráfico de los cambios de pendiente sou puede encajar -Matlab

Jokerp:

Los siguientes códigos computa y parcelas del aptos para un gráfico. El problema es que cada vez que tengo que encontrar donde la pendiente cambia por mi cuenta. Véase el siguiente gráfico:

introducir descripción de la imagen aquí

¿Hay una manera de encontrar de forma automática?

start=50;             rd1start=1;
ending=100;             rd1end=100;

relative=zeros(1,100);
W_esc_half=linspace(1,100,100);                         % x axis values
relative(1:50)=W_esc_half(1:50).^(1.2);       % y axis values  fof smaller times

relative(50:100)=W_esc_half(50:100).^(1.5);      % y axis values for greater times

figure(1)
fitResults1 = polyfit(log10(W_esc_half(start:ending)),log10(relative(start:ending)),1);
pol=polyval(fitResults1,log10(W_esc_half(start:ending)));                                 % Compute the fit coefficients
a=fitResults1(1);
b=fitResults1(2);
polyfit_str = ['<(?r)^2> ~ ? ^{'  (num2str(a)) ' } '] ;


fit1=W_esc_half(start:ending).^a*10^(b);


hold on
loglog((W_esc_half(rd1start:rd1end)),(relative(rd1start:rd1end)),'blue-','LineWidth',2)  % draw the original function
loglog((W_esc_half(start:(length(pol)+start-1))),fit1,'cyan--','LineWidth',2);            % draw the fit
max:

Normalmente me gusta hacerlo mediante la búsqueda rápida en el diffde la señal de

subplot(2,1,1)
plot(diff(relative),'.')
subplot(2,1,2)
findpeaks(diff(relative))

Pero usted tiene una pendiente aumentando poco a poco, además de un cambio aburbt. Así que si su función no es tan bonita, es posible que necesite ajustar la findpeaksfunción de un poco. Por otro lado, si usted tiene pendientes constantes y abrubt cambios, también puede ir con find(abs(diff(relative)) > 1).

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=280948&siteId=1
Recomendado
Clasificación