麻烦帮我看一下代码的问题?

b1=1;b2=0.5;b3=0.02;b4=0.1;b5=2;x1data=[470285470470470100100470100100100285285]x2dat... b1=1;
b2=0.5;
b3=0.02;
b4=0.1;
b5=2;
x1data=[470 285 470 470 470 100 100 470 100 100 100 285 285]
x2data=[300 80 300 80 80 190 80 190 300 300 80 300 190]
x3data=[10 10 120 120 10 10 65 65 54 10 120 10 120]
x=[x1data',x2data',x3data'];
ydata=[8.55 3.79 4.82 0.02 2.75 14.39 2.54 4.35 13 8.5 0.05 11.32 3.13]';
b0=[2 1 0 1 3];
fun=@(b,x) (b(1)*x(2,:)-(x(3,:)/b(5)))/(1+b(2)*x(1,:)+b(3)*x(2,:)+b(4)*x(3,:));
C=lsqcurvefit(fun,b0,x,ydata);
x1=linspace(x1data(1),x1data(end));
x2=linspace(x2data(1),x2data(end));
x3=linspace(x3data(1),x3dta(end));
y=fun(C,[x1;x2;x3]);
Plot4(x1data,x2data,x3data,ydata,'o',x1,x2,x3,y)
展开
 我来答
lhmhz
高粉答主

2023-08-02 · 专注matlab等在各领域中的应用。
lhmhz
采纳数:7264 获赞数:17017

向TA提问 私信TA
展开全部

【代码问题】

1、函数定义有误。

fun=@(b,x) (b(1)*x(2,:)-(x(3,:)/b(5)))/(1+b(2)*x(1,:)+b(3)*x(2,:)+b(4)*x(3,:));

这里的x(1,:)、x(2,:)、x(3,:)与给定的数据数组格式不一致

应纠正为

fun=@(b,x)(b(1)*x(:,2)-(x(:,3)/b(5)))./(1+b(2)*x(:,1)+b(3)*x(:,2)+b(4)*x(:,3));

2、linspace函数使用有误

x1=linspace(x1data(1),x1data(end));

x2=linspace(x2data(1),x2data(end));

x3=linspace(x3data(1),x3data(end));

由于x1data、x2data与x3data是无规律的数据,所以用linspace函数扩充数据是不对应的。

因此,也绘制不出其新的图形。


【建议】

对于拟合后的数据,应与原数据进行相关系数计算R²(该公式可以参考数理统计的回归分析)。

即ydata与y的比较

y2=fun(C,x);

y1=ydata;

R2=R2_coef(y1,y2);


经多次拟合,可得到

C =       324.25       11.836       20.375       8.3067    0.0042971      0.86396

决定系数 R^2=0.8639580173


来自:求助得到的回答
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式