声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 10085|回复: 38

[小波] 如何在MATLAB中读入DZT格式数据

[复制链接]
发表于 2008-5-6 13:47 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
请问如何在MATLAB中读入DZT格式,即探地雷达数据,我想对其进行小波分析,我用了如下程序,可是读出的数据有问题,关键是所得的fid好像不对,不知道怎么回事,是不是程序有错,烦请各位高手指教!
fid=fopen('XHA_____022.DZT','rb');
status=fseek(fid,1024,'bof');
m=1024;
n=20;
a22=fread(fid,[m,n],'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
回复
分享到:

使用道具 举报

 楼主| 发表于 2008-5-6 13:48 | 显示全部楼层
用了uigetfile函数也好像不对!:@(
发表于 2008-5-6 14:03 | 显示全部楼层
 楼主| 发表于 2008-5-6 14:47 | 显示全部楼层
原帖由 ch_j1985 于 2008-5-6 14:03 发表


可以用fscanf命令试试看

用了,结果还是一样。
我怀疑是不是fid=fopen('XHA_____022.DZT','rb');这句不对啊?是不是不该这么用呢?
 楼主| 发表于 2008-5-6 14:53 | 显示全部楼层
[RadarFile,DataPath]=uigetfile('*.dzt','选择原始探地雷达数据文件');
fid=fopen([RadarFile,DataPath],'rb');
m=1024;
n=20;
a22=fscanf(fid,'%s',[m,n]);
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.
发表于 2008-5-6 15:00 | 显示全部楼层
fid=fopen('XHA_____022.DZT','rb');

'rb'  改为'wt'试试
发表于 2008-5-6 15:16 | 显示全部楼层
原帖由 vivid920 于 2008-5-6 14:53 发表
[RadarFile,DataPath]=uigetfile('*.dzt','选择原始探地雷达数据文件');
fid=fopen([RadarFile,DataPath],'rb');
m=1024;
n=20;
a22=fscanf(fid,'%s',[m,n]);
m=m-51;
a1=zeros(m,n);
for i=1:n
       for  ...


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

[ 本帖最后由 jinnian 于 2008-5-6 15:17 编辑 ]
发表于 2008-5-6 15:26 | 显示全部楼层
感觉前面1楼的fopen没错,应该是a22=fread(fid,[m,n],'single')有问题,可能数据类型不是single的。
发表于 2008-5-6 17:50 | 显示全部楼层
原帖由 vivid920 于 2008-5-6 14:53 发表
[RadarFile,DataPath]=uigetfile('*.dzt','选择原始探地雷达数据文件');
fid=fopen([RadarFile,DataPath],'rb');
m=1024;
n=20;
a22=fscanf(fid,'%s',[m,n]);
m=m-51;
a1=zeros(m,n);
for i=1:n
       for  ...


能不能把探地雷达数据文件传上来?
 楼主| 发表于 2008-5-6 18:54 | 显示全部楼层
DZT格式的文件传不上来,所以转换成了TXT文件!

20.txt

185.94 KB, 下载次数: 47

 楼主| 发表于 2008-5-6 19:04 | 显示全部楼层
未命名.jpg
得到这样的图形,并不是我所想要的
 楼主| 发表于 2008-5-6 19:07 | 显示全部楼层
1.jpg
我希望得到的是这样的波形!有谁知道怎么在MATLAB里读出吗?
发表于 2008-5-6 19:34 | 显示全部楼层
原帖由 vivid920 于 2008-5-6 18:54 发表
DZT格式的文件传不上来,所以转换成了TXT文件!


DZT格式的文件里的数字维数是多少?
一共有31744个数字,31行,1024列,对吗?
 楼主| 发表于 2008-5-6 20:01 | 显示全部楼层
一共有31744个数字,31行,1024列,对吗?
对的
发表于 2008-5-6 20:53 | 显示全部楼层
原帖由 vivid920 于 2008-5-6 20:01 发表
一共有31744个数字,31行,1024列,对吗?
对的

这几句代码什么意思?

m=1024;
n=20;
a22=fread(fid,[m,n],'single');
m=m-51;
a1=zeros(m,n);
for i=1:n
       for ii=1:m
           a1(ii,i)=a22(ii,i);
       end
   end
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-15 18:52 , Processed in 0.078564 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表