使用matlab画图标记小数点部分为不同的颜色

这段代码使用MATLAB读取CSV文件中的数据,并针对一列数据找出所有连续的小数部分,将其存储为元胞数组。然后,通过扩展小数部分的边界数据,用不同颜色在图表中绘制这些连续的小数段。最后,设置了图表的显示范围、坐标刻度和标签,以展示血糖水平随时间变化的趋势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

clc;
clear all;
data = importdata('E:\matlab\ouliter\5751-train.csv');
data = data.data;
%读取某一列
glucose = data(:,2);
%获得小数部分索引
[m,n] = find(glucose~=round(glucose));
%将连续是小数的数据以元胞数组形式保存
b  = cell(0,0);
num = [];
ct = 1;
head = 1;
tail = 1;
while(ct<numel(m))
    head = ct;
    ct = ct+1;
    while(ct<=numel(m)&&(m(ct)-m(ct-1))==1)
        ct = ct+1;
    end
    tail = ct-1;
    b = [b;m(head:1:tail)'];
    num = [num; tail-head+1];
end
if(tail<numel(m))
    b = [b;glucose(tail+1)'];
    num = [num; 1];
end
%获取小数数据区域的总段数
[c,d] = size(b);
%先画出整体的图,然后利用hold on 将一段段的小数段用不同的颜色画上去
plot(glucose,'Color',[0.12 0.47 0.71],'LineWidth',1.5)
hold on
%对于小数部分的两端分别向外扩展一个数据,这样这条曲线都是小数部分了
for i = 1:1:c
    bi = cell2mat(b(i));
    [e,f] = size(bi);
    if f == 1
        bi = [bi-1,bi,bi+1];
    end
    plot(bi,glucose(bi),'Color',[1 0.5 0.05],'LineWidth',1.5);
%     if length(cell2mat(b(i)))>1
    hold on
end

set(gca,'XLim',[5337 7209],'linewidth',1.2); 		% X轴显示范围
set(gca,'XTick',[5337:288:7209]);%设计标签
set(gca,'XTickLabel',{'06','07','08','09','10','11','12'},'linewidth',1.2)% 设置坐标刻度
% set(gca,'XTickLabel',{'0h','2h','4h','6h','8h','10h','12h','14h','16h','18h','20h','22h','0h','2h','4h','6h','8h','10h','12h','14h','16h','18h','20h','22h','24h'})
% set(gca,'XLim',[0 288]); 		% X轴显示范围
% set(gca,'XTick',[0:24:288]);	% 设置坐标刻度
% set(gca,'xtickslabels',{'0h','2h','4h','6h','8h','10h','12h','14h','16h','18h','20h','22h','24h'}
% xlabel('Time');
ylabel('Blood Glucose Leval');
title('575');
legend('Imputed','0riginal')
% 去掉图例边框
% legend('boxoff'); 	% 法1
% legend boxoff;		% 法2
% % 关闭图像右上角边框
% box off
% 设置绘图外围颜色
set(gcf, 'Color', [1,1,1])      
% fprintf('最长的连续数组是:\n')
% disp(b{max(num)==num})
汽车备用驱动模块,核心是当车辆发生碰撞后,其备用电源(核心部件为超级电容)可以为车辆供电并驱动解锁中控锁、儿童锁和门把手锁。意外发生后,依次驱动解锁左前中控锁、右后中控锁、右前中控锁、左后中控锁、左后儿童锁、右后儿童锁、左前门把手锁、右后门把手锁、右前门把手锁、左后门把手锁,解锁这10个锁为一个轮次。其中,三类锁,中控锁驱动解锁的时间和电流、儿童锁驱动解锁的时间和电流、门把手锁驱动解锁的时间和电流均不同,需要分开考虑。但是超级电容作为备用电源会存在很多影响其能量的因素,现在需要根据超级电容的总能量来计算总的解锁轮次。 现有参数:超级电容充电截止电压12.5V、超级电容放电截止电压9V、超级电容内阻0.25Ω、超级电容内阻损耗、模块自耗电电流0.1A、模块自耗电时间(只算驱动解锁前的时间,为4秒)、模块静电损耗、模块电路内阻、模块电路内阻损耗、驱动解锁间隔期0.05s、mos管内阻、mos管内阻损耗、驱动解锁间隔期mos管的电感放电、中控锁驱动解锁时间和电流、儿童锁驱动解锁时间和电流、门把手锁驱动解锁时间和电流,其中超级电容内阻、mos管内阻和模块电路内阻并不在驱动电路,所以计算的时候也不是用对应的解锁电流去计算能量损耗,而且在驱动解锁间隔期电容无损耗,但mos管内阻还在损耗。所以理论上说是发生碰撞后再过四秒才进行解锁,但在这四秒期间超级电容还未启动,所以只存在模块自耗电电流造成的超级电容内阻损耗。在系统驱动解锁期间就不存在自耗电电流了。请根据以上因素,给我写出能够驱动解锁轮次的matlab代码,除给定具体值外,其余为给定的数据可酌情自定。 要求:1.做成一个图,该图可以实时查看解锁轮次以及该轮次消耗的能量,解锁轮次可用小数点来表示,不必全部取整。2.要同步显示当前剩余电压。
最新发布
07-25
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值