作业帮 > 综合 > 作业

用matlab cftool工具箱拟合曲线的时候,怎么获得所要的数据点个数?

来源:学生作业帮 编辑:灵鹊做题网作业帮 分类:综合作业 时间:2024/04/30 02:52:21
用matlab cftool工具箱拟合曲线的时候,怎么获得所要的数据点个数?

图是拟合之后的曲线,在matlab中输入,如下:

obj = get(gca,'children');

x=get(obj(1), 'xdata');

y=get(obj(1), 'ydata');


matlab中,x,y都是1*499个数据,想要获得500个,或者获得自己所需要的数据个数,在cftool拟合过程中如何操作,或者其他的方法,请指教!


用matlab cftool工具箱拟合曲线的时候,怎么获得所要的数据点个数?
我觉得我们需要是结果,以及结果的精度,而非结果中数据的个数.

>> x=[1:5];
>> y=2*x
为例:
结果为
Linear model Poly1:
f(x) = p1*x + p2
Coefficients (with 95% confidence bounds):
p1 = 2 (2,2)
p2 = -4.658e-16 (-3.172e-15,2.24e-15)
Goodness of fit:
SSE:1.972e-30
R-square:1
Adjusted R-square:1
RMSE:8.108e-16
若是楼主真得需要,推荐楼主去看操作生成的代码
function [fitresult,gof] = createFit(x,y)
[xData,yData] = prepareCurveData( x,y );
% Set up fittype and options.
ft = fittype( 'poly1' );
% Fit model to data.
[fitresult,gof] = fit( xData,yData,ft );
% Plot fit with data.
figure( 'Name','untitled fit 1' );
h = plot( fitresult,xData,yData );
legend( h,'y vs.x','untitled fit 1','Location','NorthEast' );
% Label axes
xlabel( 'x' );
ylabel( 'y' );
grid on
其实我已经看到了这里几个函数的帮助,没有发现可以设置拟合数据的长度的.
再问: 那个图是手动选取后拟合的,故分布不够均匀,想用y的数据利用插值法,重新等距采样, t=0:0.005:3;y1=interp1(x,y,t);但是会出现错误: ??? Error using ==> interp1 at 262 The values of X should be distinct. 应该是x,y的数据个数和t不一致造成的,因此才提出上面的疑问,为把y的数据个数和t一致哈
再答: 楼主插值出错了? 只要y1=interp1(x,y,t);中x,y,数据长度一致,这句是没有问题的。 结果y1会与t同样长度。
再问: 出错了,不知道为什么,我x数据和y个数一样啊,而且x 数据都不一样,没有重复的,只是x的数很小,是不是这个问题哈?求指教啊
再答: 楼主能上传附件吗?把x,y保存一下 输入save 然后把左边出现的matlab.mat发过来 代码 也复制上来 。