Como determinar automaticamente onde o gráfico muda de inclinação sou você pode caber -Matlab

Jokerp:

Os seguintes calcula código e parcelas o ajuste para um gráfico. O problema é que cada vez que eu tenho que descobrir onde a inclinação muda em meu próprio. Consulte o seguinte gráfico:

digite descrição da imagem aqui

Existe uma maneira de encontrá-lo automaticamente?

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
máx:

Eu normalmente como fazê-lo rápido, olhando para a difffora do sinal

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

Mas você tem uma inclinação aumentando lentamente, além de uma mudança aburbt. Então, se a sua função não é tão bom, você pode precisar de ajustar a findpeaksfunção um pouco. Por outro lado, se você tem pistas constantes e abrubt mudanças, você também pode ir com find(abs(diff(relative)) > 1).

Acho que você gosta

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