声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1080|回复: 5

[编程技巧] 请大侠指教一下这个程序

[复制链接]
发表于 2007-5-28 14:08 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
sta67_2m.m文件
function yy=model(beta0,x)
  a=beta0(1);
  b=beta0(2);
  c=beta0(3);
  x1=x(:,1);
  x2=x(:,2);
  x3=x(:,3);
  yy=(1080+a*x1)*(1+b*log(x2/0.00057))*(1-c*(x3-293)/293);
命令窗口:
x=[0.028 0.00057 293;0.037 0.00057 293;0.045 0.00057 293;0.053 0.00057 293;0.061 0.00057 293;0.072 0.00057 293;0.08 0.00057 293;0.089 0.00057 293;0.093 0.00057 293;0.106 0.00057 293;0.113 0.00057 293;0.124 0.00057 293;0.133 0.00057 293;0.028 1500 293;0.037 1500 293;0.045 1500 293;0.053 1500 293;0.061 1500 293;0.072 1500 293;0.08 1500 293;0.089 1500 293;0.093 1500 293;0.106 1500 293;0.113 1500 293;0.124 1500 293;0.133 1500 293;0.028 1500 183;0.037 1500 183;0.045 1500 183;0.053 1500 183;0.061 1500 183;0.072 1500 183;0.08 1500 183;0.089 1500 183;0.093 1500 183;0.106 1500 183;0.113 1500 183;0.124 1500 183;0.133 1500 183;0.028 1500 163;0.037 1500 163;0.045 1500 163;0.053 1500 163;0.061 1500 163;0.072 1500 163;0.08 1500 163;0.089 1500 163;0.093 1500 163;0.106 1500 163;0.113 1500 163;0.124 1500 163;0.133 1500 163]

y=[1070 1080 1090 1100 1120 1130 1150 1150 1160 1170 1180 1190 1195 1410 1420 1430 1440 1450 1460 1470 1470 1480 1470 1480 1480 1495 1530 1600 1615 1610 1605 1610 1620 1620 1620 1615 1620 1620 1625 1690 1720 1730 1740 1740 1760 1760 1760 1750 1755 1740 1725 1730]

beta0=[1000 0 0];
betafit=nlinfit(x,y,'sta67_2m.m',beta0)
运行出错,怎么办啊?
回复
分享到:

使用道具 举报

发表于 2007-5-28 14:30 | 显示全部楼层
还是将原问题用word上传一下吧---看不懂你要做什么.
另:明显地,你的x,y不匹配...

评分

1

查看全部评分

发表于 2007-5-28 15:19 | 显示全部楼层
把文件名改成sta67_2m改成model(同函数名相同),
拟合参数时用
betafit=nlinfit(x,y,@model,beta0)

评分

1

查看全部评分

 楼主| 发表于 2007-5-28 15:37 | 显示全部楼层

word 文件及问题

请大侠指教,帮忙解决下,谢谢!!

问题.doc

25 KB, 下载次数: 10

发表于 2007-5-28 16:39 | 显示全部楼层
发表于 2010-10-29 15:09 | 显示全部楼层
本帖最后由 ChaChing 于 2010-10-29 21:08 编辑

以前没使用过nlinfit, 但对3F的意见有怀疑, 就看下help并试下
这么久了, 我想LZ应该解决了, 但忘记分享经验了
问题不在"sta67_2m改成model(同函数名相同)", function后的名称与档案名称其实是可以不同的(但个人不建议如此用), matlab是以档案名称呼叫的
主要问题出在yy计算式不对, 及function handle使用错误
sta67_2m.m
  1. function yy=model(beta0,x)
  2.   a=beta0(1); b=beta0(2); c=beta0(3);
  3.   x1=x(:,1); x2=x(:,2); x3=x(:,3);
  4.   yy=(1080+a*x1).*(1+b*log(x2/0.00057)).*(1-c*(x3-293)/293);
复制代码
主程序
  1. clc; clear
  2. x=[0.028 0.00057 293;0.037 0.00057 293;0.045 0.00057 293;0.053 0.00057 293;0.061 0.00057 293;0.072 0.00057 293;0.08 0.00057 293;0.089 0.00057 293;0.093 0.00057 293;0.106 0.00057 293;0.113 0.00057 293;0.124 0.00057 293;0.133 0.00057 293;0.028 1500 293;0.037 1500 293;0.045 1500 293;0.053 1500 293;0.061 1500 293;0.072 1500 293;0.08 1500 293;0.089 1500 293;0.093 1500 293;0.106 1500 293;0.113 1500 293;0.124 1500 293;0.133 1500 293;0.028 1500 183;0.037 1500 183;0.045 1500 183;0.053 1500 183;0.061 1500 183;0.072 1500 183;0.08 1500 183;0.089 1500 183;0.093 1500 183;0.106 1500 183;0.113 1500 183;0.124 1500 183;0.133 1500 183;0.028 1500 163;0.037 1500 163;0.045 1500 163;0.053 1500 163;0.061 1500 163;0.072 1500 163;0.08 1500 163;0.089 1500 163;0.093 1500 163;0.106 1500 163;0.113 1500 163;0.124 1500 163;0.133 1500 163];
  3. y=[1070 1080 1090 1100 1120 1130 1150 1150 1160 1170 1180 1190 1195 1410 1420 1430 1440 1450 1460 1470 1470 1480 1470 1480 1480 1495 1530 1600 1615 1610 1605 1610 1620 1620 1620 1615 1620 1620 1625 1690 1720 1730 1740 1740 1760 1760 1760 1750 1755 1740 1725 1730]; y=y';
  4. beta0=[1000 0 0];
  5. betafit=nlinfit(x,y,'sta67_2m',beta0) %%betafit=nlinfit(x,y,@sta67_2m,beta0)
复制代码

评分

1

查看全部评分

您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-9-21 18:54 , Processed in 0.058735 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表