You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何截取生理信号中1.5-2.5秒的目标片段?

生理信号截取实现方案

问题描述

您好,我需要您指导如何截取信号并仅保留所需部分。我有一段生理信号,希望保留信号上升阶段(1.5秒处开始)至约2.5秒处的片段,移除信号的开头和结尾部分。我附上了信号图像及生成该信号的Matlab代码,恳请您提供实现方法或对应的Matlab代码,期待您的回复,谢谢。

信号波形图

生理信号波形图

原Matlab代码

cd 'D:\Research\TFR classification\DATI'
filenames=dir('*.txt');
Fs=500;
TextSize=24;
time_FIF=zeros(1,length(filenames));
for i= 24 %length(filenames)
%% Signal
%close all

fprintf(['\n\n\n *******************************************\n\n'...
    '         CODICE data set = ' filenames(i).name(1:end-4) '\n\n'...
    '         We are  assuming a sampling rate of 500 Hz\n\n'...
    ' *******************************************\n\n'])
%% Import data from text file
opts = delimitedTextImportOptions("NumVariables", 25);
% Specify range and delimiter
opts.DataLines = [1, Inf];
opts.Delimiter = "\t";
% Specify column names and types
opts.VariableNames = ["Var1", "Var2", "Var3", "Var4", "Var5", "Var6", "Var7", "Var8", 
"Var9", "Var10", "Var11", "Var12", "Var13", "Var14", "Var15", "Var16", "Var17", "Var18", 
"Var19", "Var20", "Var21", "Var22", "Var23", "VarName24", "Var25"];
opts.SelectedVariableNames = "VarName24";
opts.VariableTypes = ["string", "string", "string", "string", "string", "string", 
"string", "string", "string", "string", "string", "string", "string", "string", 
"string", "string", "string", "string", "string", "string", "string", "string", 
"string", "double", "string"];
% Specify file level properties
opts.ExtraColumnsRule = "ignore";
opts.EmptyLineRule = "read";
% Specify variable properties
opts = setvaropts(opts, ["Var1", "Var2", "Var3", "Var4", "Var5", "Var6", "Var7", "Var8", 
"Var9", "Var10", "Var11", "Var12", "Var13", "Var14", "Var15", "Var16", "Var17", "Var18", 
"Var19", "Var20", "Var21", "Var22", "Var23", "Var25"], "WhitespaceRule", "preserve");
opts = setvaropts(opts, ["Var1", "Var2", "Var3", "Var4", "Var5", "Var6", "Var7", "Var8", 
"Var9", "Var10", "Var11", "Var12", "Var13", "Var14", "Var15", "Var16", "Var17", "Var18", 
"Var19", "Var20", "Var21", "Var22", "Var23", "Var25"], "EmptyFieldRule", "auto");
opts = setvaropts(opts, "VarName24", "DecimalSeparator", ",");
% Import the data
s = readtable(filenames(i).name, opts);
s = table2array(s);
s = s(1420:3358);
%s = s(4.1*Fs:7.4*Fs);
%% Clear temporary variables
clear opts
%%    
Fig=figure;
plot((1:length(s))/Fs,s,'k')
xlabel('time (s)')
title(['Signal ' filenames(i).name(1:end-4)])
set(gca,'fontsize', TextSize);
set(Fig,'Units', 'Normalized', 'OuterPosition', [0 0 1 1]);

实现方法与修改后代码

核心逻辑

已知采样率Fs=500Hz,直接计算目标时间段对应的采样点索引:

  • 1.5秒对应采样点:start_idx = 1.5 * Fs = 750
  • 2.5秒对应采样点:end_idx = 2.5 * Fs = 1250

通过数组索引切片截取信号片段,同时调整绘图时间轴,确保显示的时间范围与截取区间匹配。

修改后的完整代码

cd 'D:\Research\TFR classification\DATI'
filenames=dir('*.txt');
Fs=500;
TextSize=24;
time_FIF=zeros(1,length(filenames));
for i= 24 %length(filenames)
%% Signal
%close all

fprintf(['\n\n\n *******************************************\n\n'...
    '         CODICE data set = ' filenames(i).name(1:end-4) '\n\n'...
    '         We are  assuming a sampling rate of 500 Hz\n\n'...
    ' *******************************************\n\n'])
%% Import data from text file
opts = delimitedTextImportOptions("NumVariables", 25);
% Specify range and delimiter
opts.DataLines = [1, Inf];
opts.Delimiter = "\t";
% Specify column names and types
opts.VariableNames = ["Var1", "Var2", "Var3", "Var4", "Var5", "Var6", "Var7", "Var8", 
"Var9", "Var10", "Var11", "Var12", "Var13", "Var14", "Var15", "Var16", "Var17", "Var18", 
"Var19", "Var20", "Var21", "Var22", "Var23", "VarName24", "Var25"];
opts.SelectedVariableNames = "VarName24";
opts.VariableTypes = ["string", "string", "string", "string", "string", "string", 
"string", "string", "string", "string", "string", "string", "string", "string", 
"string", "string", "string", "string", "string", "string", "string", "string", 
"string", "double", "string"];
% Specify file level properties
opts.ExtraColumnsRule = "ignore";
opts.EmptyLineRule = "read";
% Specify variable properties
opts = setvaropts(opts, ["Var1", "Var2", "Var3", "Var4", "Var5", "Var6", "Var7", "Var8", 
"Var9", "Var10", "Var11", "Var12", "Var13", "Var14", "Var15", "Var16", "Var17", "Var18", 
"Var19", "Var20", "Var21", "Var22", "Var23", "Var25"], "WhitespaceRule", "preserve");
opts = setvaropts(opts, ["Var1", "Var2", "Var3", "Var4", "Var5", "Var6", "Var7", "Var8", 
"Var9", "Var10", "Var11", "Var12", "Var13", "Var14", "Var15", "Var16", "Var17", "Var18", 
"Var19", "Var20", "Var21", "Var22", "Var23", "Var25"], "EmptyFieldRule", "auto");
opts = setvaropts(opts, "VarName24", "DecimalSeparator", ",");
% Import the data
s = readtable(filenames(i).name, opts);
s = table2array(s);

% 核心修改:截取1.5秒到2.5秒的信号片段
start_time = 1.5;
end_time = 2.5;
start_idx = start_time * Fs;
end_idx = end_time * Fs;
s = s(start_idx:end_idx);

%% Clear temporary variables
clear opts
%%    
Fig=figure;
% 调整时间轴,显示实际截取的时间范围
time_axis = start_time:(1/Fs):end_time;
plot(time_axis, s, 'k')
xlabel('time (s)')
title(['Signal ' filenames(i).name(1:end-4) ' (1.5s to 2.5s)'])
set(gca,'fontsize', TextSize);
set(Fig,'Units', 'Normalized', 'OuterPosition', [0 0 1 1]);

内容的提问来源于stack exchange,提问作者muhamamd hammad malik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 23:20:37