Matlab导入log(或txt)文件,提取数据或其他信息

导入log(或txt)文件

先上代码:

clc;
clear;
%数据导入
file1=fullfile('文件路径', 'test1.log');      % 导入文件'test1.log'
f1=fopen(file1); 
dt1=textscan(f1,'%s');  %采用textscan 读取数据
%得到的dt1是元胞数组格式

比如:有如下内容文件
在这里插入图片描述
导入后存在数据变量dt1中的形式如下图所示:
在这里插入图片描述

提取数据或其他信息

通过上面的导入,可以通过遍历的方式去提取自己想要的内容。一个提取数据比较偷懒的方式,就是在生成数据文件或内容文件之前,在需要提取的数据之前,设置好一个特别的字符,这样子,在遍历时,一旦遇到这样一个字符,就将后面的数据或信息提取单独保存即可。
如下示例:

index1=0;%设置的特别字符 按照自己文件来
x1=[];y1=[];%用来存储提取的数据或信息
i=1;
while(i<=length(dt1{1,1})) %这里涉及元胞数据结构的操作 
    symbal=dt1{1,1}(i,1);%对照上面的存储 就是取了一个单元格的内容
    %disp(symbal)
    if(strcmp(cell2mat(symbal),num2str(index1))) %字符比较 如果相等 则进入if循环
        x1=[x1 index1];%
        y1=[y1 str2num(cell2mat(dt1{1,1}(i+1,1)))];%提取数据 + 格式转换
        i=i+2;%相应的跳过这些提取的信息 按照自己文件来
        index1=index1+1;
        %disp(index)
        continue;
    end
    i=i+1;
end
fclose(f1);
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
微分熵是一种常用的脑电信号特征,可以用于脑电信号的分类、识别和分析。下面是MATLAB代码实现微分熵的提取。 首先,需要导入脑电信号数据,假设数据存储在变量eeg_data中。然后,可以使用MATLAB的EEGLAB工具箱中的函数来进行预处理和滤波,例如: ```matlab % 导入EEGLAB工具箱 addpath('eeglab/'); % 导入脑电信号数据 eeg_data = load('eeg_data.mat'); % 选取通道和时间段 chan = 1; % 选取第一个通道 time_start = 1; % 选取开始时间点 time_end = 1000; % 选取结束时间点 eeg_data = eeg_data(eeg_data(:,1)>=time_start & eeg_data(:,1)<=time_end,chan+1); % 设置滤波参数 low_freq = 1; % 低通滤波频率 high_freq = 30; % 高通滤波频率 filter_order = 3; % 滤波器阶数 % 使用EEGLAB工具箱中的函数进行滤波 eeg_data = eegfilt(eeg_data, 500, low_freq, high_freq, filter_order); ``` 接着,可以使用MATLAB的自定义函数来计算微分熵,例如: ```matlab function [de, de_norm] = diff_entropy(eeg_data, m, r) % 计算数据长度和延迟矩阵 n = length(eeg_data); delay_matrix = zeros(n-m, m+1); for i = 1:n-m delay_matrix(i,:) = eeg_data(i:i+m); end % 计算距离矩阵 dist_matrix = pdist(delay_matrix); % 计算相对熵 de = -sum(log(dist_matrix./r))/length(dist_matrix); % 计算标准化微分熵 de_norm = de/log(length(eeg_data)); end ``` 其中,m和r是微分熵计算的参数,m表示延迟矩阵的行数,r表示距离矩阵的缩放因子。可以根据实际需求设置这些参数的值。 最后,可以对整个脑电信号数据进行微分熵的计算,并将结果存储在一个特征向量中,例如: ```matlab % 定义微分熵计算的参数 m = 3; r = 0.2; % 定义特征向量 de_feature = zeros(size(eeg_data,1), 1); % 对每个时间点进行微分熵的计算 for i = 1:size(eeg_data,1) de_feature(i) = diff_entropy(eeg_data(i,:), m, r); end ``` 这样,就可以得到一个包含微分熵特征的向量de_feature,用于脑电信号的分析和分类。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值