不好意思,我仔细检查了一下,真是发现有不少我在输入程序时的错误。但我修改后试了一下,好像还是不行。
就是从“v(3)=1-v(1)+v(2);”这一行开始出现问题。
后面的“at(i,:)=v(i)*x(i,:);”和“S=(at(1,:)+at(2,:)+at(3,:));”好像也是一样。
显示“??? Index exceeds matrix dimensions.”
意思应该是矩阵的维数错误,但我看了一下,好像没什么问题啊
这里是我修改过的程序:
Clear
m=3;
Ti=228;
v=[1/3,1/3,1/3];
fid=fopen('C:\Documents and Settings\Administrator\1.txt', 'r');
x=fscanf(fid,'%f',[3,inf]);
fclose(fid);
n=length(x(1,:));
T=x(1,:)+x(2,:)+x(3,:);
j=1;
for i=1:n
if x(1,i)+x(2,i)+x(3,i)==Ti
h(j)=i;
j=j+1;
end
end
t=length(h);
for j=1:m
for v=0.1:1:.1
xh1=0;
xh2=0;
for i=1:t
xh1=v^t*x(j,h(i)) ^t+xh1;
xh2=v^t+xh2;
end
xh(j,10*v)=xh1/xh2;
end
end
G=0;
for j=1:m
for i=1:t
G=x(j,i)*Ti^i+G;
end
Gt(j)=G;
end
for i=1:m
for v=0.1:1:.1
d(i,10*v)=Gt(i)-xh(i,10*v);
end
dd(i)=min(d(1,:));
if d(i,10*v)-dd(i)==0
v(i)=v;
end
end
v(3)=1-v(1)+v(2);
for i=1:m
at(i,:)=v(i)*x(i,:);
end
S=(at(1,:)+at(2,:)+at(3,:));
fid=fopen('C:\Documents and Settings\Administrator\1.xls', 'w');
for i=1:n;
fprintf(fid,'%10.4f %10.4f %10.4f %10.4f %10.4f\n',x(1,i),x(2,i),x(3,i),T(1,i),S(1,i));
end
status=fclose(fid);
[ 本帖最后由 hws2007 于 2008-10-14 16:15 编辑 ] |