2021-04-22

本文介绍了MATLAB中读取CSV文件的两种方法:csvread和textscan函数。csvread适用于纯数字的逗号分隔文件,提供了三种读取方式,包括读取整个文件、指定范围内的数据。例如,csvread('csvlist.csv')可读取整个文件,csvread('csvlist.csv',2,0)则读取第2行及以后的数据。而textscan函数需要配合fopen使用,读取结果存储在cell数组中,更灵活处理非数字或复杂格式的数据。

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

1、用csvread函数
注意:csvread函数只试用与用逗号分隔的纯数字文件

第一种:M = CSVREAD(‘FILENAME’) ,直接读取csv文件的数据,并返回给M

第二种:M = CSVREAD(‘FILENAME’,R,C) ,读取csv文件中从第R-1行,第C-1列的数据开始的数据,这对带有头文件说明的csv文件(如示波器等采集的文件)的读取是很重要的。

第三种:M = CSVREAD(‘FILENAME’,R,C,RNG),其中 RNG = [R1 C1 R2 C2],读取左上角为索引为(R1,C1) ,右下角索引为(R2,C2)的矩阵中的数据。

注意:matlab认为CSV第1行第1列的单元格坐标为(0,0)

给定一个csvlist.csv文件,其内容如下

02, 04, 06, 08, 10, 12

03, 06, 09, 12, 15, 18

05, 10, 15, 20, 25, 30

07, 14, 21, 28, 35, 42

11, 22, 33, 44, 55, 66

例1.1 读取整个文件

csvread(‘csvlist.csv’)

ans =

 2     4     6     8    10    12

 3     6     9    12    15    18

 5    10    15    20    25    30

 7    14    21    28    35    42

11    22    33    44    55    66

例1.2 读取第2行以下,第0列以右区域的数据

m = csvread(‘csvlist.dat’, 2, 0)

m =

 5    10    15    20    25    30

 7    14    21    28    35    42

11    22    33    44    55    66

例1.3 读取第2行以下,第0列以右,第3行以上,第3列以左区域的数据

m = csvread(‘csvlist.dat’, 2, 0, [2,0,3,3])

m =

 5    10    15    20

 7    14    21    28

2、使用textscan函数
在使用textscan函数前必须用fopen函数打开CSV文件。textscan函数读取的结果会存在cell数组中。

调用格式

要比较两个时间戳之间的差异,可以利用 `date` 命令或者编程语言(如 Python 或 Bash 脚本)来实现。以下是具体方法: ### 方法一:通过 Linux 的 `date` 和 `awk` 计算时间差 可以通过以下命令计算两个时间戳之间的时间差(单位为秒)。 ```bash #!/bin/bash timestamp1="2025-03-16T13:33:38+08:00" timestamp2="2021-04-22T08:25:10Z" # 将时间转换为 UTC 时间并获取 Unix 时间戳 time1=$(date -u -d "${timestamp1}" +%s) time2=$(date -u -d "${timestamp2}" +%s) # 计算时间差 diff=$((time1-time2)) echo "Time difference in seconds: $diff" ``` 上述脚本会将输入的时间戳转换为 Unix 时间戳,并计算两者之差[^1]。 --- ### 方法二:使用 Python 编写脚本来比较时间戳 Python 提供了强大的日期处理库 `datetime` 来解析 ISO 8601 格式的时间戳并进行运算。 ```python from datetime import datetime, timezone # 输入时间戳 timestamp1 = "2025-03-16T13:33:38+08:00" timestamp2 = "2021-04-22T08:25:10Z" # 解析时间戳 dt1 = datetime.fromisoformat(timestamp1).astimezone(timezone.utc) dt2 = datetime.fromisoformat(timestamp2.replace('Z', '+00:00')).astimezone(timezone.utc) # 计算时间差 delta = dt1 - dt2 print(f"Time difference: {delta.days} days, {delta.seconds} seconds") ``` 此代码片段能够正确解析带有时区偏移量的时间戳,并返回两者的天数和秒数差异[^2]。 --- ### 方法三:基于 Docker 日志功能间接验证时间戳 如果需要对比的是某个容器内的日志时间和外部指定时间,则可借助 `docker logs` 命令提取日志中的时间戳并与目标时间做比较。例如: ```bash CONTAINER_ID=cacf7a960d29 LOG_TIME="2023-04-29T19:22:53" # 获取自 LOG_TIME 后的日志条目 docker logs -t --since="$LOG_TIME" "$CONTAINER_ID" ``` 这一步骤可以帮助确认容器内部事件发生的具体时刻是否晚于给定的参考时间[^3]。 --- ### 总结 无论是采用 Shell 还是 Python 方案,均能有效完成对不同格式时间戳间差距的量化分析工作;而当涉及实际业务场景下的数据校验时,则可能还需要结合具体的上下文信息进一步细化逻辑设计[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值