clayn 发表于 2007-5-13 15:37

请大家帮我看看这个程序的数据加载问题

clear,close all
m=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 编辑 ]

yangzj 发表于 2007-5-13 16:18

dat文件里的完整内容是什么,你读出来是什么?

clayn 发表于 2007-5-13 16:26

回复 #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;

yangzj 发表于 2007-5-13 16:32

这样的文件直接
a1=load('d:\shuju1.dat','r');
就行了

yangzj 发表于 2007-5-13 16:38

原帖由 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
...

照你这样做也没有问题呀

clayn 发表于 2007-5-13 16:45

回复 #5 yangzj 的帖子

果然,我也用过LOAD,可是结果是一样的,都是警告超出矩阵超出维数,应该是个6*6的矩阵,可是出来的是1维的矩阵啊,郁闷了~

不过还是谢谢楼上的这位仁兄~

[ 本帖最后由 yangzj 于 2007-5-13 16:53 编辑 ]

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

clayn 发表于 2007-5-13 17:01

回复 #7 yangzj 的帖子

我用的是MATLAB 6.5,请问你用的是什么版本的呢,我同学也和我说有的程序可能是因为版本的问题而不兼容,难道真的是这样的么??

eight 发表于 2007-5-13 23:52

原帖由 clayn 于 2007-5-13 16:45 发表 http://www.chinavib.com/forum/images/common/back.gif
果然,我也用过LOAD,可是结果是一样的,都是警告超出矩阵超出维数,应该是个6*6的矩阵,可是出来的是1维的矩阵啊,郁闷了~

不过还是谢谢楼上的这位仁兄~


试试 reshape
页: [1]
查看完整版本: 请大家帮我看看这个程序的数据加载问题