Matlab作图实例——xlabel,ylabel,title,text,plot,patch,datetime等的应用

本文通过实例演示了如何使用Matlab制作线性图,用变量标记点,并展示了画线形函数图及填充部分、添加网格的方法。同时提到了在新浪微博分享相关编程技巧。

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

Matlab作图实例——xlabel,ylabel,title,text,plot,patch,datetime等的应用

做线性图,并用变量标记每个点

所用数据如下:
在这里插入图片描述

代码如下:

clear
clc
format compact
format shortG 
T = readtable('repayment_schedule.xlsx','ReadVariableNames',true)
T.time=datetime(datestr(T.time,'yyyy.mm.dd'),'InputFormat','yyyy.MM.dd',...
    'format','yyyy.MM.dd')
p=plot(T.time,T.m_per_month,T.time,T.m_residue)
p(1).Marker='o'
p(2).Marker='*'
box off
%让y轴不用科学计数法显示
h=gca
y_val=h.YTick
y_str=string(y_val) %等价于y_str=num2str(y_val')
h.YTickLabel=y_str
%横轴日期显示设置
h.XTick=T.time
xtickangle(45) %让x轴的标签逆时针旋转45度
%画垂直虚线
hold on
p1=plot([datetime(2018,11,20) datetime(2018,11,20)],...
    [0 30830],'Color',[
### MATLAB `datetime` 类型的使用方法 #### 1. 创建 `datetime` 对象 可以使用多种方式创建 `datetime` 对象。以下是几种常见的方法: - **当前日期和时间** 通过 `'now'` 参数获取当前系统的日期和时间,并可指定时区和格式化字符串。 ```matlab t = datetime('now', 'TimeZone', 'local', 'Format', 'd-MMM-y HH:mm:ss Z'); ``` 上述代码会返回类似于以下的结果: `07-Oct-2023 14:30:00 +0800`[^3] - **特定日期和时间** 可以通过提供具体的年、月、日以及其他参数来定义一个精确的时间点。 ```matlab A = datetime(2014, 9, 1, 16, 0, 0, 'TimeZone', 'America/Los_Angeles', ... 'Format', 'dd-MMM-yyyy HH:mm:ss Z'); B = datetime(2014, 9, 1, 17, 0, 0, 'TimeZone', 'America/New_York', ... 'Format', 'dd-MMM-yyyy HH:mm:ss Z'); ``` 这将分别生成两个不同的 `datetime` 对象,用于表示不同地区的同一时刻[^5]。 --- #### 2. 转换为其他数据类型 有时需要将 `datetime` 数据转换为其他形式的数据以便进一步处理。 - **转换为双精度浮点数** MATLAB 提供了一个内置函数 `yyyymmdd` 来实现这一功能,它能够提取并组合日期部分形成一个双精度数值。 ```matlab dateNum = yyyymmdd(datetime(2023, 10, 7)); disp(dateNum); % 输出结果应接近于 20231007 的整数值 ``` 此操作对于存储或者传输简化后的日期非常有用[^1]。 - **转换回字符或字符串** 如果希望以某种自定义的方式展示日期,则可以利用 `char` 或者 `string` 函数完成转化。 ```matlab dt = datetime('today'); formattedDateChar = char(dt); formattedDateString = string(dt); % 显示两种格式化的结果 disp(formattedDateChar); % 如 '07-Oct-2023' disp(formattedDateString); % 同样可能显示 '07-Oct-2023' ``` --- #### 3. 时间计算与比较 在科学研究以及工程应用中经常涉及对时间段的操作或是多个时间节点之间的对比分析。 - **基本运算** 支持加减天数、小时等单位长度的动作;同时也允许直接相减得到差值(通常表现为持续期对象)。 ```matlab startDate = datetime('yesterday'); endDate = datetime('tomorrow'); durationBetween = endDate - startDate; disp(durationBetween); % 可能输出 Duration 数组表明两天间隔 ``` - **跨地区同步校准** 当项目涉及到多地点协作时尤其重要的是考虑不同时区的影响因素。 ```matlaB LA_time = datetime(2014, 9, 1, 16, 0, 0, 'TimeZone', 'America/Los_Angeles'); NYC_time = LA_time + hours(timezone('America/New_York').UTCOffset - timezone('America/Los_Angeles').UTCOffset); disp(NYC_time.Format('HH:mm')); % 应该显示出对应纽约时间为下午五点钟左右 ``` 以上例子展示了如何调整来自洛杉矶的一个固定时刻到东海岸标准下的表现形式。 --- #### 4. 高级特性——批量处理与时序图绘制 针对大规模数据集中的时间序列管理需求,MATLAB 还提供了丰富的工具箱辅助高效编程实践。 假设存在一组记录了交易发生瞬间的信息列表如下所示: | TimeStamp | Price | |--------------------|-------| | 2023-10-07T10:00Z | $100 | | ... | ... | 我们可以先加载这些原始资料再执行必要的预处理步骤最后呈现可视化成果图表。 ```matlab data.TimeStamps = [...]; % 假设这里填充实际读取出来的数组内容 data.Prices = [...] ; figure(); plot(data.TimeStamps,data.Prices,'-*'); title('Price vs Timestamps'); xlabel('Time Stamps'), ylabel('Prices ($)'); datetick('x','yyyy-mm-dd HH:MM'); grid on ; ``` 这样就能清晰直观地观察价格随时间变化的趋势走向情况了! ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值