用matlab编写如下要求代码:标出心电信号fft图中工频干扰
时间: 2023-05-27 15:03:37 浏览: 140
以下是一种基于MATLAB的代码实现,它可以帮助您在心电信号FFT图中标出工频干扰。
```
%% 加载心电信号数据
load ecgdata.mat;
%% 计算信号的FFT
fs = 1000; % 采样频率
N = length(ecg); % 信号长度
f = (0:N-1)*fs/N; % 构建频率轴
X = fft(ecg); % 计算FFT
%% 绘制FFT图
Y = abs(X); % 取FFT的绝对值
subplot(2,1,1), plot(f(1:N/2), Y(1:N/2)) % 绘制频谱图
xlabel('Frequency (Hz)');
ylabel('Amplitude');
title('FFT of ECG Signal');
%% 查找工频干扰
fmin = 48; % 工频干扰下限频率
fmax = 52; % 工频干扰上限频率
idx = (f > fmin & f < fmax); % 找出频率范围内的频率索引
h = max(Y(idx)); % 找出最大值
f0 = f(idx(Y == h)); % 找出对应的频率
%% 绘制工频干扰标志线
subplot(2,1,1), hold on;
line([f0 f0], [0 h], 'Color', 'r');
%% 绘制信号波形
subplot(2,1,2), plot(ecg);
xlabel('Time (ms)');
ylabel('Amplitude');
title('ECG Signal');
```
此代码的结果应显示两个子图:顶部子图是FFT图,标有突出显示的工频干扰线,底部子图是原始心电信号波形。您可以随时更改代码中的工频干扰下限和上限以适应您的具体数据。
阅读全文