以下是用MATLAB计算输入参数的半峰全宽的代码:

% 假设输入参数为 x 和 y,其中 x 是自变量,y 是因变量
% 假设 y 是一个包含多个峰的信号

% 找到峰值点的索引
[~, peakIdx] = findpeaks(y);

% 初始化半峰全宽数组
fwhm = zeros(size(peakIdx));

% 计算半峰全宽
for i = 1:length(peakIdx)
    % 找到峰值点的高度
    peakHeight = y(peakIdx(i));
    
    % 找到峰值点左侧的半高度点
    leftIdx = find(y(1:peakIdx(i)) <= peakHeight/2, 1, 'last');
    
    % 找到峰值点右侧的半高度点
    rightIdx = find(y(peakIdx(i):end) <= peakHeight/2, 1, 'first') + peakIdx(i) - 1;
    
    % 计算半峰全宽
    fwhm(i) = x(rightIdx) - x(leftIdx);
end

% 输出半峰全宽
disp(fwhm);

上述代码使用了MATLAB的findpeaks函数来找到峰值点的索引。然后,使用一个循环计算每个峰的半峰全宽。在循环中,首先找到峰值点的高度,然后找到左侧和右侧的半高度点的索引,最后计算半峰全宽。最后,将半峰全宽输出到命令窗口。

请注意,此代码仅适用于单峰和多峰的情况。如果信号包含多个峰,则半峰全宽将作为一个数组输出


原文地址: https://www.cveoy.top/t/topic/hU1M 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录