MATLAB调用M文件时出错,出现Error: Function definitions are not permitted in this context.求高手解答

我不太懂MATLAB,哪位高手帮我下看看程序的错误是什么
function [px0,ab,rel]=gm11(x0,number)
%[px0,ab,rel]=gm11(x0,number)
%px0为预测数列,rel为平均相对误差,rel为平均相对误差(为百分比)
%默认的number参数为原数组大小
if nargin==1 %对输入矩阵进行判断,如不是一维列矩阵,进行转置变换
number=max(size(x0));
end
n=max(size(x0)); %取输入数据的样本量
x1=zeros(size(x0));
for k=1:n
for i=1:k
x1(k)=x1(k)+x0(i); %计算累加值,并将值赋予矩阵be
end
end
z=zeros(size(x0));
for k=2:n
z(k)=0.5*(x1(k)+x1(k-1)); %计算数据矩阵B的第一列数据
end
y=x0';
y(1)=[];
b(:,1)=-z';
b(:,2)=1;
b(1,:)=[];
ab=inv(b'*b)*b'*y; %计算参数 矩阵
a=ab(1);
b=ab(2);
px0(1)=x0(1);
%求还原值系列
for k=1:number-1
px0(k+1)=(1-exp(a)) * ( x0(1)-b/a ) * exp(-a*k);
end
temp=px0(1:n);
x0;
temp=(temp-x0)./x0; %相对误差
temp(1)=[]; %删除第一个为零的误差
temp=abs(temp);
rel=sum(temp)/(n-1)*100;

残差Gm(1,1)
function [px0,ab,rel]=ccgm11(x0,number)
%[px0,ab,rel]=gm11(x0,number)
%px0为残差预测数列,ab为求得的系数,rel为平均相对误差(为百分比)
%默认的number参数为原数组大小
if nargin==1
number=max(size(x0));
end
n=max(size(x0)); %数组大小..
[px0,ab,rel]=gm11(x0,number);
wucha=x0-px0(1:n);
i=n;
%求后面的同号的数目.
while(wucha(i)*wucha(i-1)>0 & i>=2)
i=i-1;
end
start=i;
length=n-i+1;
??? function [px0,ab,rel]=gm11(x0,number)
|
Error: Function definitions are not permitted in this context.

>>
帮我看看错误在那,我主要是求GM(1,1)等维新息的运算 MARLAB上运行不太会
最好能发到我的邮箱里[email protected]

第1个回答  2012-05-25
temp=(temp-x0)./x0; %相对误差
temp(1)=[]; %删除第一个为零的误差
temp=abs(temp);
rel=sum(temp)/(n-1)*100;

残差Gm(1,1)
function [px0,ab,rel]=ccgm11(x0,number)
%[px0,ab,rel]=gm11(x0,number)
%px0为残差预测数列,ab为求得的系数,rel为平均相对误差(为百分比)
%默认的number参数为原数组大小
if nargin==1
number=max(size(x0));
第2个回答  2012-05-25
没有错误
试了下程序可以运行,你要是出错说明调用的方法不对
但是感觉程序似乎不完整,ccgm11这个函数没有实现功能本回答被提问者采纳
相似回答