2016-08-27 11 views
0

두 개의 축이 있습니다 : 하나는 이미지보기 용이고 다른 하나는 그래프 플로팅 용입니다. plot(handles.axis,curve,x,y)을 시도 할 때 Error using plot. A numeric or double convertible argument is expected의 데이터를 그릴 축을 지정하려고하면이 오류가 발생합니다.'fit'함수를 사용할 때 축을 지정하는 방법

figure 
handles.axis = gca; 
x = 1:10; 
y = 1:10; 
curve = fit(x',y','linearinterp'); 
plot(curve,x,y) % works fine 
plot(handles.axis,curve,x,y) % doesn't work 
plot(curve,x,y,'Parent',handles.axis) % doesn't work 

이 예제를 Matlab에 붙여 넣어 시험해 볼 수 있습니다. 축을 지정하기 위해 코드를 어떻게 수정할 수 있습니까?

답변

1

plot in the curve fitting toolboxMATLAB's base plot과 같지 않습니다. sfit 개체의 부모 축 지정을위한 문서화 된 구문이 있지만이 경우 fit 호출에 의해 반환되는 cfit 개체의 경우는없는 것 같습니다.

그러나, 문서에서 우리는 볼 내용 : current axisplot 이전에 설정되어있는 경우 그래서 어떤

경우

plot(cfit) 플롯 현재 축의 도메인을 통해 cfit 객체를, 원하는대로 작동하도록 호출하십시오. 그림의 CurrentAxes 속성을 수정하거나 축 객체의 핸들을 입력으로 사용하여 axes을 호출하여 수행 할 수 있습니다.

그것은 plot 함수는 두 개의 벡터 뒤에 축 후 적합한 개체를 좋아하지 않는 것으로 보이는 다음과 같이

% Set up GUI 
h.f = figure; 
h.ax(1) = axes('Parent', h.f, 'Units', 'Normalized', 'Position', [0.07 0.1 0.4 0.85]); 
h.ax(2) = axes('Parent', h.f, 'Units', 'Normalized', 'Position', [0.55 0.1 0.4 0.85]); 

% Set up curve fit 
x = 1:10; 
y = 1:10; 
curve = fit(x', y', 'linearinterp'); % Returns cfit object 

axes(h.ax(2)); % Set right axes as CurrentAxes 
% h.f.CurrentAxes = h.ax(2); % Set right axes as CurrentAxes 
plot(curve, x, y); 
+0

해결책은 위의 잘못된 코드와 똑같습니다. 커브 피팅 도구 상자에서 'plot'을 사용하면 축을 지정할 수도 있습니까? – Senyokbalgul

+0

@Senyokbalgul 나는 나의 반응을 업데이트했다. MATLAB이'sfit'과'cfit' 객체를 구별하는 것을 구분하지 않았다. – excaza

1

나는 내 대답을 수정. 이러한 경우에, 나는 같은 것을 할 것입니다 :

x = 1:10; 
y = 1:10; 
figure % new figure 
ax1 = subplot(2,1,1); 
ax2 = subplot(2,1,2); 

curve = fit(x',y','linearinterp'); 
plot(ax1,x,curve(x)); 
hold on;plot(ax1,x,y,'o') % works fine 

plot(ax2,x,curve(x)); 
hold on;plot(ax2,x,y,'o') % works fine 

사실 트릭은 plot 기능 전체에 맞춤 객체를주지 않고 x 다음 curve(x)이 같은 벡터를 제공하는 것입니다.