2017-01-20 3 views
0

Я пытаюсь построить две встроенные кривые с использованием двухместной модели gauss на Matlab. При построении графиков на индивидуальной основе графики показывают всю установленную кривую, но когда я совмещаю и встроенную кривую на одном графике, отображается только часть кривых, остальная часть обрезается.Построение двух встроенных кривых на одном и том же участке (MATLAB)

код:

% Data  
X1 = [0 1 2 3 4 5 6 7 8 9 10]'; 
Y1 = [0.004 0.010 0.025 0.036 0.057 0.061 0.044 0.032 0.039 0.024 0.020]'; 
X2 = X1; 
Y2 = [0.012 0.018 0.032 0.046 0.067 0.071 0.054 0.042 0.025 0.019 0.011]'; 

[p1,p2,p3] = deal(0.04, 3.5, 1.6); 
[q1,q2,q3] = deal(0.03, 5.8, 4.02); 

% Options 
opt = fitoptions('method','NonlinearLeastSquares','Lower',[-Inf -Inf 0]); 
ind1 = isfinite(X1) & isfinite(Y1); 
ind2 = isfinite(X2) & isfinite(Y2); 

set(opt,'Startpoint',[p1 p2 p3 q1 q2 q3]); 
typ = fittype('gauss2'); 

% Fit 
cf1 = fit(X1(ind1),Y1(ind1),typ,opt); 
cf2 = fit(X2(ind2),Y2(ind2),typ,opt); 

figure(1) 
plot(cf1,'fit',0.95); 

figure(2) 
plot(cf2,'fit',0.95); 

% Problem lies here while combining the two plots 
figure(3) 
hold on 
plot(cf1,'fit',0.95); 
plot(cf2,'fit',0.95); 
  • Как показывают две кривые в том же участке ?.
  • Как сделать встроенные кривые для начала в точке x = 0, y = 0,02 без изменения большей части его первоначальной формы?
+1

попробуйте 'plot (cf1, cf2)'. Это должно изображать обе кривые в одном и том же сюжете. Это также работает, если вы собираете данные и хотите построить данные и встроенную кривую на одном сюжете (fitobject, data_x, data_y). – fukurai

ответ

4

Заменить

figure(3) 
hold on 
plot(cf1,'fit',0.95); 
plot(cf2,'fit',0.95); 

по

figure(3) 
plot(cf1,'fit',0.95); 
hold on 
plot(cf2,'fit',0.95); 

Что происходит? Команда hold уже фиксирует ось графика. Кажется, что график соответствия использует эту ось для определения диапазона графика. Если вы планируете провести до удержания, график подгонки автоматически определяет его диапазон графика.

+0

Как заставить встроенные кривые начинаться с нужной точки ?. Например, если я хочу, чтобы установленные кривые начинались с y = 0,02? – dykes

+0

Попробуйте 'ось ([xmin, xmax, ymin, ymax]);' command. – Florian

+0

Не так, извините, если вы меня не поняли. Я ищу как готовые кривые для начала в точке x = 0, y = 0,02, сохраняя большую часть своей формы. Небольшое изменение его формы в начальных точках, например, от x = 0 до x = 1, приемлемо. – dykes

Смежные вопросы