messenger 发表于 2008-8-5 16:19

哈哈,我知道你错在哪了,我知道不该笑,不过还是想笑:lol

你size的是文件标识,不是数组

把程序改为
>> fid = fopen('H:\eof\sstxin.dat','rb'); %打开文件,二进制

>> hc1 = fread(fid,Inf,'float'); %inf:正无穷,全部读入,变量原来排放顺序:经度,纬度,高度,变量,时次

>> =size(hc1);

>> hc = reshape(hc1,xl*yl,tl);%改变维数,成为m*n的矩阵,m为观测点个数,n为时刻数



原帖由 蜜雪儿 于 2008-8-5 16:03 发表 http://www.chinavib.com/forum/images/common/back.gif
fid = fopen('H:\eof\sstxin.dat','rb'); %打开文件,二进制
>> =size(fid);
>> =size(fid)

tl =

   1


xl =

   1


yl =

   1
--------------------------------试 ...

蜜雪儿 发表于 2008-8-5 16:28

>> fid = fopen('H:\eof\sstxin.dat','rb'); %打开文件,二进制
>> hc = fread(fid,Inf,'float'); %inf:正无穷,全部读入,变量原来排放顺序:经度,纬度,高度,变量,时次
>> =size(hc)

tl =

   1284660


xl =

   1


yl =

   1----------------------------------我又试了一下,这是结果,还不是我想要的结果

messenger 发表于 2008-8-5 16:50

你的程序里的错误可真多呀:@L

reshape要求更改矩阵尺寸前后的两个矩阵的体积相同,

很明显,你的 xl*yl*tl =81*56*305不等xl1*yl1*tl1=1284660*1*1

>> xl=81;
>> yl=56;
>> tl=305;

>> fid = fopen('H:\eof\sstxin.dat','rb'); %打开文件,二进制

>> hc1 = fread(fid,Inf,'float'); %inf:正无穷,全部读入,变量原来排放顺序:经度,纬度,高度,变量,时次

=size(hc1)

>> hc = reshape(hc1,xl*yl,tl);%改变维数,成为m*n的矩阵,m为观测点个数,n为时刻数




原帖由 蜜雪儿 于 2008-8-5 16:28 发表 http://www.chinavib.com/forum/images/common/back.gif
>> fid = fopen('H:\eof\sstxin.dat','rb'); %打开文件,二进制
>> hc = fread(fid,Inf,'float'); %inf:正无穷,全部读入,变量原来排放顺序:经度,纬度,高度,变量,时次
>> =size(hc)

tl =

   1284660


xl =

   1


yl =

   1----------------------------------我又试了一下,这是结果,还不是我想要的结果...

sigma665 发表于 2008-8-5 19:03

回复 18楼 的帖子

文件读进去,最多也应该是2维的
不可能是三维的吧

你读进去的是一个一维的数据
而你原先给的
>> xl=81;
>> yl=56;
>> tl=305
与读如数据的大小不一致
如果txt 文件没有漏掉数据
那么修改你的xi yi ti
页: 1 [2]
查看完整版本: 关于reshape命令