2016-08-27 7 views
0

私は2つの軸を持っています.1つは画像を見るためのもので、もう1つはグラフのプロットです。 を試してみると、どの軸をデータにプロットするかを指定しようとすると、このエラーが発生します。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 toolboxは、MATLAB's base plotと同じではありません。 sfitオブジェクトの親軸を指定するための構文が文書化されていますが、この場合はfit呼び出しによって返されるcfitオブジェクトには1つのようではありません。

しかし、私たちがいることがわかりドキュメントから:現在の軸のドメインにわたる

plot(cfit)がプロットcfitオブジェクトを、もしあれば

のでcurrent axisが前plotに設定されている場合必要に応じて動作するはずです。これは、FigureのCurrentAxesプロパティを変更するか、Axesオブジェクトのハンドルを入力としてaxesを呼び出して行うことができます。

% 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

次のように私は私の答えを絞り込む:

plot関数は、2つのベクトルが続く軸の後にフィットオブジェクトを好きではないということになります。

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) 2のようなベクターを提供することである。このような場合、私はこのような何かをするだろう。

関連する問題