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:
¿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 diff
de 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 findpeaks
funció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)
.