matlab绘制心电图格子

   展示效果如下:

代码如下

function [fig] = ecg_plot(data, varargin)
    %可选参数如下:
    p = inputParser;
    defaultColumn=1;
    defaultFs = 1000;
    defaultHeight = 2;
    defaultGap = 0.4*defaultFs;   
    defaultColor = [0,0,0.7];
    addParameter(p,'Column',defaultColumn);
    addParameter(p,'Fs',defaultFs);
    addParameter(p,'Height',defaultHeight);
    addParameter(p,'Gap',defaultGap);
    addParameter(p,'LeadNames',[]);
    addParameter(p,'Color',defaultColor);
    % addParameter(p,'MinorGridColor',[0.75, 0.75, 0.75]);
    % addParameter(p,'GridColor',[0.4,0.4,0.4]);
    addParameter(p,'MinorGridColor',[1, 0.7, 0.7]);
    addParameter(p,'GridColor',[1,0,0]);
    addParameter(p,'LineWidth', 1);
    parse(p,varargin{:});
    columns = p.Results.Column;
    fs = p.Results.Fs;
    row_height = p.Results.Height;
    gap = p.Results.Gap;
    leadnames = p.Results.LeadNames;

    %心电格子绘制
    % fig = figure('Name','ECG','NumberTitle','off');
    % set(fig, 'position', get(0,'ScreenSize'))
    hold on    
    [ch,len] = size(data);   
    rows = ceil(ch/columns);
    % set(gcf,'unit','inches','position',[0,0,((len*columns + columns*gap)), rows*row_height]);
    x_min = -gap;   
    x_max = columns*len + columns*gap;
    y_min = row_height/2 - rows*row_height;
    y_max = row_height/2;
    xticks(x_min-10*fs:0.2*fs:x_max+10*fs)
    xticklabels([])
    yticks(y_min-10:0.5:y_max+10)
    yticklabels([])
    ax = gca;
    ax.GridLineStyle = '-';
    ax.GridColor = p.Results.GridColor;
    ax.GridAlpha = 0.25;
    ax.XGrid = 'on';
    ax.YGrid = 'on';
    ax.MinorGridLineStyle = '-';
    ax.MinorGridColor = p.Results.MinorGridColor;
    ax.MinorGridAlpha = 0.25;
    ax.XMinorGrid = 'on';
    ax.YMinorGrid = 'on';
    ax.XAxis.MinorTickValues = x_min-10*fs:0.04*fs:x_max+10*fs;
    ax.XAxis.MinorTickValuesMode="manual";
    ax.YAxis.MinorTickValues = y_min-10:0.1:y_max+10;
    ax.XAxis.MinorTickValuesMode="manual";
    ylim([y_min, y_max])
    xlim([x_min, x_max])
    
    %波形绘制
    t = (1:len);
    for c = 1:columns
        for i = 1:rows
            t_lead = (c - 1)*rows + i;
            y_offset = -row_height*ceil(mod((i - 1),rows));
            x_offset = 0;        
            if c > 1
                x_offset = len*(c - 1) + gap*c;
                % plot([x_offset-gap/2, x_offset-gap/2], [y_offset, y_offset + 1],'Color', p.Results.Color, 'LineWidth',p.Results.LineWidth)
            else
                % plot((-gap:1/fs:-gap/2),square(2*pi*2/gap*((-gap:1/fs:-gap/2)-gap*5/8))/2+ 0.5 + y_offset,'Color', p.Results.Color, 'LineWidth',p.Results.LineWidth)
            end   
            if false == isempty(leadnames)
                text(x_offset-0.2*fs, y_offset, leadnames(t_lead),'FontSize', 12)
            end
            plot(t + x_offset, data(t_lead,:) + y_offset, 'Color', p.Results.Color, 'LineWidth',p.Results.LineWidth)
        end
    end
  
end

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值