vivid920 发表于 2008-5-6 13:47

如何在MATLAB中读入DZT格式数据

请问如何在MATLAB中读入DZT格式,即探地雷达数据,我想对其进行小波分析,我用了如下程序,可是读出的数据有问题,关键是所得的fid好像不对,不知道怎么回事,是不是程序有错,烦请各位高手指教!
fid=fopen('XHA_____022.DZT','rb');
status=fseek(fid,1024,'bof');
m=1024;
n=20;
a22=fread(fid,,'single');
m=m-51;
a1=zeros(m,n);
for i=1:n
       for ii=1:m
         a(ii,i)=a22(ii,i);
       end
   end
fclose(fid);
figure(1);
for l=1:n
       subplot(1,n,l);
      plot(a1(:,l),1:m);
       hold on;
      axis off;
      axis('ij');
end

vivid920 发表于 2008-5-6 13:48

用了uigetfile函数也好像不对!:@(

ch_j1985 发表于 2008-5-6 14:03

原帖由 vivid920 于 2008-5-6 13:48 发表 http://www.chinavib.com/forum/images/common/back.gif
用了uigetfile函数也好像不对!:@(

可以用fscanf命令试试看

vivid920 发表于 2008-5-6 14:47

原帖由 ch_j1985 于 2008-5-6 14:03 发表 http://www.chinavib.com/forum/images/common/back.gif


可以用fscanf命令试试看
用了,结果还是一样。
我怀疑是不是fid=fopen('XHA_____022.DZT','rb');这句不对啊?是不是不该这么用呢?

vivid920 发表于 2008-5-6 14:53

=uigetfile('*.dzt','选择原始探地雷达数据文件');
fid=fopen(,'rb');
m=1024;
n=20;
a22=fscanf(fid,'%s',);
m=m-51;
a1=zeros(m,n);
for i=1:n
       for ii=1:m
         a(ii,i)=a22(ii,i);
       end
   end
fclose(fid);
figure(1);
for l=1:n
       subplot(1,n,l);
      plot(a1(:,l),1:m);
       hold on;
      axis off;
      axis('ij');
end

用这个命令,运行后出现
??? Error using ==> fscanf
Invalid fid.

qinyu 发表于 2008-5-6 15:00

fid=fopen('XHA_____022.DZT','rb');

'rb'改为'wt'试试

jinnian 发表于 2008-5-6 15:16

原帖由 vivid920 于 2008-5-6 14:53 发表 http://www.chinavib.com/forum/images/common/back.gif
=uigetfile('*.dzt','选择原始探地雷达数据文件');
fid=fopen(,'rb');
m=1024;
n=20;
a22=fscanf(fid,'%s',);
m=m-51;
a1=zeros(m,n);
for i=1:n
       for  ...

fid=fopen(,'rb')这样不行,用fid=fopen('d:\XHA_____022.DZT','rb')这样的试一试。

[ 本帖最后由 jinnian 于 2008-5-6 15:17 编辑 ]

jinnian 发表于 2008-5-6 15:26

感觉前面1楼的fopen没错,应该是a22=fread(fid,,'single')有问题,可能数据类型不是single的。

ch_j1985 发表于 2008-5-6 17:50

原帖由 vivid920 于 2008-5-6 14:53 发表 http://www.chinavib.com/forum/images/common/back.gif
=uigetfile('*.dzt','选择原始探地雷达数据文件');
fid=fopen(,'rb');
m=1024;
n=20;
a22=fscanf(fid,'%s',);
m=m-51;
a1=zeros(m,n);
for i=1:n
       for...

能不能把探地雷达数据文件传上来?

vivid920 发表于 2008-5-6 18:54

DZT格式的文件传不上来,所以转换成了TXT文件!

vivid920 发表于 2008-5-6 19:04


得到这样的图形,并不是我所想要的

vivid920 发表于 2008-5-6 19:07


我希望得到的是这样的波形!有谁知道怎么在MATLAB里读出吗?

ch_j1985 发表于 2008-5-6 19:34

原帖由 vivid920 于 2008-5-6 18:54 发表 http://www.chinavib.com/forum/images/common/back.gif
DZT格式的文件传不上来,所以转换成了TXT文件!

DZT格式的文件里的数字维数是多少?
一共有31744个数字,31行,1024列,对吗?

vivid920 发表于 2008-5-6 20:01

一共有31744个数字,31行,1024列,对吗?
对的

ch_j1985 发表于 2008-5-6 20:53

原帖由 vivid920 于 2008-5-6 20:01 发表 http://www.chinavib.com/forum/images/common/back.gif
一共有31744个数字,31行,1024列,对吗?
对的
这几句代码什么意思?

m=1024;
n=20;
a22=fread(fid,,'single');
m=m-51;
a1=zeros(m,n);
for i=1:n
       for ii=1:m
         a1(ii,i)=a22(ii,i);
       end
   end
页: [1] 2 3
查看完整版本: 如何在MATLAB中读入DZT格式数据