请大家帮我看看这个程序的数据加载问题
clear,close allm=input('请输入节点数=');
n=input('请输入支路数=');
fid=fopen('d:\shuju1.dat','r');
a1=fscanf(fid,'%5d',);
a1=a1';
for i=1:n
g(i,i)=1.0/a1(i,4);
end
for i=1:n
is(1,i)=a1(i,6);
end
for i=1:n
us(1,i)=a1(i,5);
end
for i=1:n
t1=a1(i,2);t2=a1(i,3);a(t1,i)=1;
a(t2,i)=-1;
end
for i=1:m-1
for j=1:n
aa(i,j)=a(i,j);
end
end
gn=aa*g*aa';us=us';is=is';
In=aa*g*us-aa*is;
Un=inv(gn)*In;
Ub=aa'*Un;
Ib=g*Ub+is-g*us;
save d:\shuju\jdd1.dat In -ascii
fclose('all');
我加载数据之后得出的a1总是一维矩阵,和我所期望的不一致.
我输入的.DAT文件是数组
[ 本帖最后由 clayn 于 2007-5-13 15:42 编辑 ] dat文件里的完整内容是什么,你读出来是什么?
回复 #2 yangzj 的帖子
dat文件中的完整内容就是上面给出的矩阵,1 2 1 5 12 0
2 3 2 6 -12 0
3 2 4 7 0 0
4 1 4 4 0 0
5 3 4 4 0 0
6 3 1 8 0 -1
警告是:"??? Index exceeds matrix dimensions."
输入M=4,N=6; 这样的文件直接
a1=load('d:\shuju1.dat','r');
就行了 原帖由 clayn 于 2007-5-13 16:26 发表 http://www.chinavib.com/forum/images/common/back.gif
dat文件中的完整内容就是上面给出的矩阵,
1 2 1 5 12 0
2 3 2 6 -12 0
3 2 4 7 0 0
4 1 4 4 0 0
...
照你这样做也没有问题呀
回复 #5 yangzj 的帖子
果然,我也用过LOAD,可是结果是一样的,都是警告超出矩阵超出维数,应该是个6*6的矩阵,可是出来的是1维的矩阵啊,郁闷了~不过还是谢谢楼上的这位仁兄~
[ 本帖最后由 yangzj 于 2007-5-13 16:53 编辑 ] 原帖由 clayn 于 2007-5-13 16:45 发表 http://www.chinavib.com/forum/images/common/back.gif
果然,我也用过LOAD,可是结果是一样的,都是警告超出矩阵超出维数,应该是个6*6的矩阵,可是出来的是1维的矩阵啊,郁闷了~
不过还是谢谢楼上的这位仁兄~
有这么奇怪?我这里运行一点问题没有哦,只有除0的warning
回复 #7 yangzj 的帖子
我用的是MATLAB 6.5,请问你用的是什么版本的呢,我同学也和我说有的程序可能是因为版本的问题而不兼容,难道真的是这样的么?? 原帖由 clayn 于 2007-5-13 16:45 发表 http://www.chinavib.com/forum/images/common/back.gif果然,我也用过LOAD,可是结果是一样的,都是警告超出矩阵超出维数,应该是个6*6的矩阵,可是出来的是1维的矩阵啊,郁闷了~
不过还是谢谢楼上的这位仁兄~
试试 reshape
页:
[1]