Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 工程数学软件 > MATLAB论坛
MATLAB论坛 一切MATLAB相关问题在此讨论。
回复
 
主题工具 显示模式
旧 2010-12-01, 16:58   #1
geophysicswang
初级会员
 
注册日期: 2010-12-01
帖子: 3
声望力: 0
geophysicswang 正向着好的方向发展
微笑 matlab文件打开-读取-定位问题-有源码就是有点小小看不懂

目的:读取一个文件
文件结构:3200字节ASCII码(卷头)+400字节二进制(文件头)+60*4字节(二进制)(道头1)+采样点数*4字节(二进制)(数据1)+
道头2+数据2……道头n+数据n【n道数据,采样率已知2毫秒,道数未知,每道样点数未知】
clc
clear
fopen C:\MATLAB7\work2\D0240_2_shot500IEEE.sgy 'r' 'n';
FID=ans
【这里出现问题1:FID= fopen(C:\MATLAB7\work2\D0240_2_shot500IEEE.sgy,'r','n');这样写居然不行,【不能是任意路径,不能有括号】
错误提示为:??? Error: File: C:\MATLAB7\work2\Untitled2.m Line: 4 Column: 16
Missing variable or function. 】
ns=3000 %每道样点数【问题2:如果每道样点数未知,有没有办法找出来。道数也未知】
total=60+ns; %每道所占四字节个数
frewind(FID); %把位置指针指向文件头
fseek(FID, 0, 'eof'); %值=0是不改变位置的意思啊,此时指针应该还在文件头吧????
position=ftell(FID); %ftell返回当前位置指针【这里得到总的字节数???】【程序在这里实际上是得到了整个文件的字节数,没看懂】【ftell是返回当前指针位置的意思吧??】
trace_num=(position-3600)/(total*4); %如果position是文件总的字节数,这里得到道数,无疑义
frewind(FID); %指针返回文件头
for k=1:trace_num %循环读取各道数据
position=3600+(total*(k-1)+60)*4; %第一道及第n道第一个数据的位置
status=fseek(FID,position,'bof'); %指针指向数据位置
if status==0
D(:,k)=fread(FID,ns,'float'); %读取,float代表32位浮点格式(4字节*8位)
else
return;
end
end
fclose(FID); %关闭文件
geophysicswang 当前离线   回复时引用此帖
旧 2010-12-01, 18:46   #2
geophysicswang
初级会员
 
注册日期: 2010-12-01
帖子: 3
声望力: 0
geophysicswang 正向着好的方向发展
默认 回复: matlab文件打开-读取-定位问题-有源码就是有点小小看不懂

问题1解决了,需要加引号,作为字符串引用
geophysicswang 当前离线   回复时引用此帖
旧 2010-12-01, 19:20   #3
geophysicswang
初级会员
 
注册日期: 2010-12-01
帖子: 3
声望力: 0
geophysicswang 正向着好的方向发展
默认 回复: matlab文件打开-读取-定位问题-有源码就是有点小小看不懂

问题基本解决了。理解有问题
geophysicswang 当前离线   回复时引用此帖
回复


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码



所有时间均为北京时间。现在的时间是 15:10


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.