matlab读取选择打开文件位置,[MATLAB基础] matlab文件打开-读取-定位问题-有源码就是有点小小看不懂...

icon7.gif 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); %关闭文件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值