#include <fstream>
using namespace std;
void main()
{
ofstream file1;
file1.open("test.dat",ios::out|ios::binary);
short temp[27]={2,4,3,1,1,1,1,2,2,2,2,11,11,11,11,22,22,22,22,111,111,111,111,222,222,222,222};
file1.write((char*)(&temp),sizeof(temp));
file1.close();
}
% xx.data文件,存储格式为:
% 所有数据都是short类型
% 前三个分别表示Volume在x,y,z方向的分辨率LineNum,LineLen,FramNum
% 按一条一条RF信号存储,即一条一条yLength存储
% frame,line :第frame帧,第line条RF信号,从1开始索引
% A :返回所要的那一条RF信号
function [A,vSize] = readvol(filegroupname,frame,line)
fid=fopen(filegroupname,'r');
vSize=fread(fid,3,'int16');
volx=vSize(1);
voly=vSize(2);
volz=vSize(3);
A=zeros(1,voly);
if (frame>volz)|(line>volx)
disp('volx,voly,volz:');
disp(vSize');
error('frame or line is too big!');
return;
end
offset=(frame-1)*volx*voly+(line-1)*voly; %跳过的数据数
fseek(fid,2*offset,'cof'); %int16为2个字节
A=fread(fid,voly,'int16');
fclose(fid);
clear z;
clear offset;
end
结果:
>> A = readvol('test.dat',2,2)
A =
22
22
22
22
>> A = readvol('test.dat',2,3)
volx,voly,volz:
2 4 3
??? Error using ==> readvol at 21
frame or line is too big!