淡冬暖流 发表于 2007-7-22 10:54

关于非线形回归问题遇到的程序错误

先定义了一个函数文件huaxue.m:
function yhat=huaxue(beta,x);
yhat=(beta(4)*x(2)-x(3)/beta(5))./(1+beta(1)*x(1)+beta(2)*x(2)+beta(3)*x(3));
然后,用nlinfit计算回归系数,用nlparci计算回归系数的置信区间,用nlpredci计算预测值
即其置信区间,编程如下:(在Untitled15.m中)
clc,clear
x0=[1 8.55 470 300 10
2 3.79 285 80 10
3 4.82 470 300 120
4 0.02 470 80 120
5 2.75 470 80 10
6 14.39 100 190 10
7 2.54 100 80 65
8 4.35 470 190 65
9 13.00 100 300 54
10 8.50 100 300 120
11 0.05 100 80 120
12 11.32 285 300 10
13 3.12 285 190 120];
x=x0(:,3:5);
y=x0(:,2);
beta=; %回归系数的初值
=nlinfit(x,y, ' huaxue ' ,beta); % f,j是下面命令用的信息
betaci=nlparci(betahat,f,j);
betaa= %回归系数及其置信区间
=nlpredci( ' huaxue ' ,x,betahat,f,j)%y的预测值及其置信区间半径,置信区间为yhat ±delta。
运行时报错:
??? Error using ==> nlinfit
FUN should return a column vector of the same length as Y.

Error in ==> D:\matlab\work\Untitled15.m
On line 5 ==> =nlinfit(x,y,'huaxue',beta); % f,j是下面命令用的信息

各位有知道为什么的吗?我觉得维数没有错呀。

[ 本帖最后由 eight 于 2007-7-23 12:47 编辑 ]

花如月 发表于 2007-7-22 13:27

回复 #1 淡冬暖流 的帖子

是调用nlinfit函数的时候错了。看一下这个帖子,和你的问题是一样的。以后记得在问之前先搜索一下版面,好多问题都是讨论过的。
http://forum.vibunion.com/forum/thread-48936-1-1.html
页: [1]
查看完整版本: 关于非线形回归问题遇到的程序错误