matlab怎么导入dat数据并作图?

2024-05-14

1. matlab怎么导入dat数据并作图?

呵呵,告诉你一个简便方法,不需要任何代码,你选中数据(假如是X)然后在workspace中的菜单就有画图的选项,选择三维图就OK了。

matlab怎么导入dat数据并作图?

2. 怎么把dat文件的数据导入matlab?

可以用textscan来读入其中的内容,并且第一行可以直接舍弃。
fid = fopen('data.dat'); % 自己改名字
C = textscan(fid, '%d8 %d8 %f32', 'HeaderLines',1);
fclose(fid);
subs = cell2mat(C(:,1:2));
vals = cell2mat(C(:,3));
vals = reshape(vals, [80 80]).';
surf(vals);

3. matlab如何生成数据dat文件

第一种方法:save(最简单基本的)
具体的命令是:用save *.txt -ascii x x为变量
*.txt为文件名,该文件存储于当前工作目录下,再打开就可以 打开后,数据有可能是以指数形式保存的. 例子:
a =[17 24 1 8 15;23 5 7 14 16 ;4 6 13 20 22 ;10 12 19 21 3 ;11 18 25 2 9 ]; save afile.txt -ascii a
afile.txt打开之后,是这样的:
1.7000000e+001 2.4000000e+001 1.0000000e+000 8.0000000e+000 1.5000000e+001 2.3000000e+001 5.0000000e+000 7.0000000e+000 1.4000000e+001 1.6000000e+001 4.0000000e+000 6.0000000e+000 1.3000000e+001 2.0000000e+001 2.2000000e+001 1.0000000e+001 1.2000000e+001 1.9000000e+001 2.1000000e+001 3.0000000e+000 1.1000000e+001 1.8000000e+001 2.5000000e+001 2.0000000e+000 9.0000000e+000 第二种方法:dlmwrite
dlmwrite('a.txt',a,'precision','.0f') 或者是dlmwrite('a.txt',a,'delimiter', '\\t')
对于只有一行或者一列的数据,很适用,但是多行的,就乱了 网上有很多这一类似的问题,但是都不是很理想 第三种方法:fopen+fprintf
下面主要介绍这种方法,可以解决以上问题:用fprintf命令:以上面的例子为例: 第一种情况:
>> a=[17 24 1 8 15;23 5 7 14 16 ;4 6 13 20 22 ;10 12 19 21 3 ;11 18 25 2 9 ]; >> fid = fopen('b.txt','wt');
fprintf(fid,'%g\\n',a); # \\n 换行 fclose(fid);
然后用写字板打开b.txt,内容如下:为列向量 17 23 4 10 11 24 5 6 12 18 1 7
13 19 25 8 14 20 21 2 15 16 22 3 9
第二种情况:
对上面的命令做一下改动:# \\n 换行改为\\t,table键 >> fid = fopen('b.txt','w'); fprintf(fid,'%g\\t',a); fclose(fid);
然后用写字板打开b.txt,内容如下:为行向量:

17 23 4 10 11 24 5 6 12 18 1 7 13 19 25 8 14 20 21 2 15 16 22 3 9

matlab如何生成数据dat文件

4. 如何使用matlab打开dat数据

matlab 打开 dat类型文件有两种比较普遍的方法 dlmread函数。例程:num = dlmread('xxx.dat');从文件中读取所有数据,并保存在num中。 textscan函数。fid=fopen('xxx.dat');num=textscan(fid,'%f');fclose(fid);

5. matlab如何导入dat数据

1、先把数据保存为dat文件。
2、使用fscanf命令调用,格式为:fid=fopen('*dat','r');z=fscanf(fid,'%g');status=fclose(fid)。(间接导入)

matlab如何导入dat数据

6. matlab读取dat文件

这是我之前处理心电数据时的程序。
心电数据是dat,不知道符不符合你的咯。
%-------------------------------------------------------------------------
% 程序Fun_ReadECGData 用于读取ECG信号数据,将原始的二值数据转换为十进制数
% 输入参数及其示例:
% PATH= 'D:/MATLAB/R2007b/work/ECG Data'; % 指定数据的储存路径
% HEADERFILE= '117.hea';      % .hea 格式,头文件,可用记事本打开。这个其实只是记录你的dat数据的一些信息的
% DATAFILE='117.dat';         % .dat 格式,ECG 数据
% SAMPLES2READ=2048;          % 指定需要读入的样本数
%                             % 若.dat文件中存储有两个通道的信号:
%                             % 则读入 2*SAMPLES2READ 个数据 
% 输出参数:M —— 一个SAMPLES2READ行2列的数据矩阵,每列数据代表一个通道的信号值
%-------------------------------------------------------------------------
                            
function M = Fun_ReadECGData(PATH,HEADERFILE,DATAFILE,SAMPLES2READ)

%------ LOAD HEADER DATA --------------------------------------------------
%------ 读入头文件数据 -----------------------------------------------------
%
% 示例:用记事本打开的117.hea 文件的数据
%
%      117 2 360 650000
%      117.dat 212 200 11 1024 839 31170 0 MLII
%      117.dat 212 200 11 1024 930 28083 0 V2
%      # 69 M 950 654 x2
%      # None
%
%-------------------------------------------------------------------------


%-------------------------------------------------------------------------
% 【注】函数 fprintf 的功能将格式化的数据写入到指定文件中。
% 表达式:count = fprintf(fid,format,A,...)
% 在字符串'format'的控制下,将矩阵A的实数数据进行格式化,并写入到文件对象fid中。该函数返回所写入数据的字节数 count。
% fid 是通过函数 fopen 获得的整型文件标识符。fid=1,表示标准输出(即输出到屏幕显示);fid=2,表示标准偏差。
%-------------------------------------------------------------------------

fprintf(1,'//n$> WORKING ON %s .../n', HEADERFILE);   % 在Matlab命令行窗口提示当前工作状态
signalh= fullfile(PATH, HEADERFILE);                           % 通过函数 fullfile 获得头文件的完整路径
fid1=fopen(signalh,'r');                            % 打开头文件,其标识符为 fid1 ,属性为'r'--“只读”
z= fgetl(fid1);                                        % 读取头文件的第一行数据,字符串格式
A= sscanf(z, '%*s %d %d %d',[1,3]);      % 按照格式 '%*s %d %d %d' 转换数据并存入矩阵 A 中
nosig= A(1);                                         % 信号通道数目
sfreq=A(2);                                           % 数据采样频率
clear A;                                                % 清空矩阵 A ,准备获取下一行数据
for k=1:nosig                                         % 读取每个通道信号的数据信息
    z= fgetl(fid1);
    A= sscanf(z, '%*s %d %d %d %d %d',[1,5]);
    dformat(k)= A(1);                                % 信号格式; 这里只允许为 212 格式
    gain(k)= A(2);                                     % 每 mV 包含的整数个数
    bitres(k)= A(3);                                   % 采样精度(位分辨率)
    zerovalue(k)= A(4);                              % ECG 信号零点相应的整数值
    firstvalue(k)= A(5);                               % 信号的第一个整数值 (用于偏差测试)
end;
fclose(fid1);
clear A;

%------ LOAD BINARY DATA --------------------------------------------------
%------ 读取 ECG 信号二值数据 ----------------------------------------------
%
% 说明:.dat 文件的数据格式
%
%      用 uint8 格式读入 N 个样本,存入矩阵 A 中,则 A 有 N 行、3列,每列一个字节,
%      即每行用三个字节表示两个数m1、m2,每个数 12 bits,故又称为 212 格式
%      m1的低8位存放在 A(:,1),m2的低8位存放在A(:,3),
%      m1的高4位存放在A(:,2)的低4位,m2的高4位存放在A(:,2)的高4位
%      
% 根据上述数据格式,可以用一系列移位、位与操作,提取出十进制格式的双通道信号数据
%
%-------------------------------------------------------------------------

if dformat~= [212,212], error('this script does not apply binary formats different to 212.'); end;
signald= fullfile(PATH, DATAFILE);                    % 读入 212 格式的 ECG 信号数据
fid2=fopen(signald,'r');
A= fread(fid2, [3, SAMPLES2READ], 'uint8')';      % 矩阵A共有SAMPLES2READ行、3列,每列数据都是以uint8格式读入,注意这时数据通过uint8的读入方式已经成为十进制数了
fclose(fid2);
M2H= bitshift(A(:,2), -4);                          % 字节向右移四位,即取字节的高四位,属于信号2的高4位
M1H= bitand(A(:,2), 15);                          % 取字节的低四位,属于信号1的高4位
PRL=bitshift(bitand(A(:,2),8),9);                % sign-bit   取出字节低四位中最高位,向左移九位
PRR=bitshift(bitand(A(:,2),128),5);            % sign-bit   取出字节高四位中最高位,向左移五位
M( : , 1)= bitshift(M1H,8)+ A(:,1)-PRL;       % 将M1H、M2H分别左移8位,即乘以2^8,再分别加上A(:,1),A(:,2),
M( : , 2)= bitshift(M2H,8)+ A(:,3)-PRR;      % 由于左移时把符号位也移动了,要减去符号位的值
M=M';            % 为了方便后期的数据处理,将输出矩阵 M 转置为2行SAMPLES2READ列
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%下面是调用啦。。。
%%%%%%%%%%%%%%%%%%%%%%
clear.clc.
PATH='E:\xiangmu\MIT-BIN';
A=[];
for i=100:131
HEADERFILE= strcat(num2str(i),'.hea');      % .hea 格式,头文件,可用记事本打开
DATAFILE=strcat(num2str(i),'.dat');         % .dat 格式,ECG 数据
SAMPLES2READ=2048;          % 指定需要读入的样本数
A(i-99,:)=Fun_ReadECGData(PATH,HEADERFILE,DATAFILE,SAMPLES2READ);
end
save A

7. matlab怎么批量导入.dat文件?

str =['E:\61705\61705-200701'];
for i=1:13
    if(i<10)
        str0 = [str,'0',num2str(i),'00.dat'];
        str12 = [str,'0',num2str(i),'12.dat'];
        data{2*i-1} = dlmread(str0);
        data{2*i} = dlmread(str12);
    else
        str0 = [str,num2str(i),'00.dat'];
        str12 = [str,num2str(i),'12.dat'];
        data{2*i-1} = dlmread(str0);
        data{2*i} = dlmread(str12);
    end
end
        
不过我不知道你数据文件想怎么保存。暂用元胞数组保存了

matlab怎么批量导入.dat文件?

8. 如何在matlab中打开一个.dat文件,并载入数据

需要根据你dat文件中的数据的形式来确定打开方式。
如果是数字 可以使用load('filename.dat')打开
如果含有字符串 则可以使用textread('filename.dat','%s')来打开