MATLAB中GUI界面内数据的读取和存储操作

要求GUI界面的输入数据为int16中频数据文件,输出数据也为int16中频数据文件。

第一步:

获取数据函数:uigetfile

先自己存储数据用于验证,将仿真数据以int16的格式存于txt文件中,分I/O两路,I路代表实部,O路代表虚部。

Data=[real(x);imag(x)];
fid=fopen('testnew.txt','wt');      %fid为文件句柄。
fprintf(fid,[repmat('%d\t',1,500),'\n'],Data');  %\t代表空格,这里使用data的转置是因为fprintf按列读取数据,500位信号数据的快拍数。

fclose(fid);                 %关闭文件。

第二步:

在GUI的m文件中读取数据。

[Filename, Pathname]=uigetfile('*.txt','Select Input file');

 if (Filename==0 & Pathname==0)  
    msgbox('您没有选择文件,请重新选择!','确认','error');  
else  
   fid = fopen(Filename,'r');
   if fid==-1
       msgbox('打开文件出错','确认','error');
   else
       [X,count] = fscanf(fid,'%f');        %此处,采用%d和%f读取数据均可。
       msgbox('打开及读取数据完毕!','确认','warn');
       fclose(fid);
   end
end

这一步取出来的数据X还是一列的形式,我们还需要依据阵元数对数据进行重组,使之为我们待处理的矩阵数据。

第三步

保存输出数据函数:uiputfile

输出数据为复数矩阵形式,为保存为int16中频数据文件,数据需将实虚部分开保存,且一个输出矩阵中包含多个输出信号,且还包含其他不需要保存的信号,所以保存第一个信号的时候,文件应具有覆盖以前文件已写数据的能力,保存其他信号时,应以追加的方式写在第一个保存的信号后面。

 [Filename, Pathname]=uiputfile('*.txt','Select Output file');
if (Filename==0 & Pathname==0)  
    msgbox('您没有保存数据!','确认','error');  
else  
str=[Pathname Filename];
fid=fopen(str,'wt');
data=[real(Se((jam_num+1),:));imag(Se((jam_num+1),:))];
fprintf(fid,[repmat('%d\t',1,datalength),'\n'],data');
fclose(fid);
fid=fopen(str,'at');
for nn=2:exp_num
    clear data
    data=[real(Se((jam_num+nn),:));imag(Se((jam_num+nn),:))];
    fprintf(fid,[repmat('%d\t',1,datalength),'\n'],data');   
end
msgbox('保存数据完毕!','确认','warn');
fclose(fid);
end

猜你喜欢

转载自blog.csdn.net/qq_20901397/article/details/79641500