文章目录
-
- [1. 背景](#1. 背景)
- [2. 待分析数据](#2. 待分析数据)
-
- [3. 函数介绍](#3. 函数介绍)
- [3.1 提取函数](#3.1 提取函数)
- [3.2 画图函数](#3.2 画图函数)
- [4. 分析步骤](#4. 分析步骤)
1. 背景
日常工作中,相信很多人也会遇到很长片段的数值计算并分析,如果这些数值可以复制到excel中就还好,可以充分利用excel强大的公式来计算。如果夹杂一些格式的符号作为分割符号,就比较难办了。但如果你是一个开发,那么使用matlab就几行代码的事情,这是非常方便的。
2. 待分析数据
这些数据指的是好几列数据,中间只是简单用分割符 区分了一下,并不包含其他格式的内容。如果包含了,就需要先进行数据提取到希望的格式,再按照此方法进行计算。
- 简单数据内容如下:
c
9,0,1764646526152078,1764646526241306
67,0,1764646526190572,1764646526291972
90,1,1764646526228836,1764646526308426
136,1,1764646526269024,1764646526346550
163,2,1764646526297787,1764646526349888
193,0,1764646526312443,1764646526384586
230,0,1764646526352615,1764646526421861
269,1,1764646526349327,1764646526445200
3. 函数介绍
针对上面的数据,我们需要先已分隔符作为标识,然后分别按列进行提取,提取之后就可以进行相关计算了。
3.1 提取函数
- readmatrix 介绍
cpp
A = readmatrix(filename) % 读取文件并返回矩阵
A = readmatrix(filename, Name, Value) % 使用指定Name标识的-Value值对组指定选项
Name标识如下:
- 'Range':指定数据范围(如 'A1:C10')
- 'Sheet':指定 Excel 工作表(如 2 或 'Sheet1')
- 'Delimiter':指定分隔符(如 ',' 或 '\t')
- 'NumHeaderLines':跳过的标题行数
- 'TreatAsMissing':将特定文本视为缺失值(如 ['NA', 'NaN'])
针对数据分析,我们就可以使用 Delimiter 标识进行数据提取。
3.2 画图函数
- plot 介绍
c
plot 是 MATLAB 中用于绘制二维图形的函数,支持多种数据输入方式和图形属性设置。其核心功能是通过连接数据点绘制曲线或散点图。
```c
plot(y) % 仅输入纵坐标数据
plot(x, y) % 输入横纵坐标数据
plot(x1, y1, x2, y2, ...) % 多条曲线绘制
plot(..., 'LineStyle', 'Color', 'Marker') % 设置图形属性
常用调用格式
- 单变量输入
plot(y) % 以索引为横坐标,y为纵坐标
plot(X) % X为复数时,实部为横坐标,虚部为纵坐标
示例:plot([1, 2, 3, 4]) 绘制折线图(横坐标为1:4)。
- 双变量输入
plot(x, y) % x和y为同维向量或矩阵
示例:plot(0:0.1:2*pi, sin(0:0.1:2*pi)) 绘制正弦曲线。
- 多曲线绘制
plot(x1, y1, x2, y2, ...) % 每对(x, y)绘制一条曲线
示例:plot(1:10, rand(1,10), 1:10, rand(1,10)) 绘制两条随机曲线。
- 图形属性设置
线型:'-'(实线)、'--'(虚线)、':'(点线)、'-.'(点划线)
颜色:'r'(红)、'g'(绿)、'b'(蓝)、'k'(黑)
标记:'o'(圆)、'x'(叉)、'+'(加号)、'*'(星)
示例:plot(x, y, 'r--o') 绘制红色虚线圆点曲线。
4. 分析步骤
- 使用分割符提取数据
- 获得数据所需的列
- 简单计算
- 画图
大致代码如下:
matlab
% 使用 , 分割符提取文件,返回矩阵形式
data = readmatrix('time.txt', 'Delimiter', ',');
% 分别获得需要的列
col1 = data(:,3);
col2 = data(:,4);
% 进行简单计算
diff_col = col2 - col1;
figure;
% plot 画图
plot(diff_col, 'b-o','LineWidth',1.5,'MarkerSize',1);
grid on;
% 设置图的标题
xlabel('行号 (Index)');
ylabel('第2列 - 第1列');
title('第2列减去第1列的结果');
legend('差值');
大致呈现结果如下:
