matlab字符串连接一定长度,MATLAB字符串连接问题——个人笔记

由于很多高频数据的日期和时间都是单独存放的字符串,即把日期放在一列,把时间放在一列,这时为了需要,需把日期和时间合并成一列,然后用matlab转化成数字型日期,具体作法有两种:

第一种:利用字符串连接法

第二种:利用数字型日期相加法

例子:现在有如下的字符型日期,需要转化为时间序列数字型向量

'04/22/2013' '9:00:00'

'04/22/2013' '9:01:00'

'04/22/2013' '9:02:00'

'04/22/2013' '9:03:00'

'04/22/2013' '9:04:00'

利用第一种方法:利用字符串连接法

先来介绍matlab中关于字符串连接的方法,在matlab中做字符串连接的函数有两个:

一、命令strcat(a,b,c...)

二、用括号[]

二者区别:

区别1:strcat中a,b,c……如果是数组的话,长度必须一致,a,b,c中可以有不标量字符串。而'[a,b]'必须是行数相同的数组或者但个字符串。

区别2:stract连接字符串之间没有空格,比如a与b之间没有空格,但是末尾可以有空格。而[]连接的两个字符串之间可以有空格。

区别3:如果a、b都是数组的话,比如都是一列等长度的数组,那么stract(a,b)为一列数组,长度于a和b相同,数组元素是把a、b中的对应字符串连接在了一起,而‘[a,b]’则是生成两列数组,第一列是a,第二列是b。

例子:

a1

=

'04/22/2013' '04/22/2013'

'04/22/2013'

'04/22/2013'

'04/22/2013'

b1 =

'9:00:00'

'9:01:00'

'9:02:00'

'9:03:00'

'9:04:00'

K>> [a1 b1]

ans =

'04/22/2013' '9:00:00'

'04/22/2013' '9:01:00'

'04/22/2013' '9:02:00'

'04/22/2013' '9:03:00'

'04/22/2013' '9:04:00'

注意:上面显然是两列数组字符串

strcat(a1,b1)

ans =

'04/22/20139:00:00'

'04/22/20139:01:00'

'04/22/20139:02:00'

'04/22/20139:03:00'

'04/22/20139:04:00'

K>> strcat(a1,b1,' /')

ans =

'04/22/20139:00:00 /'

'04/22/20139:01:00 /'

'04/22/20139:02:00 /'

'04/22/20139:03:00 /'

'04/22/20139:04:00 /'

K>> strcat(a1,' ',b1)

ans =

'04/22/20139:00:00'

'04/22/20139:01:00'

'04/22/20139:02:00'

'04/22/20139:03:00'

'04/22/20139:04:00'

注意:上面本意是要在日期和时间之间插入空格,显然strcat做不到。

在介绍过连接方法后,下一步需要把字符串连接起来,方法:

K>> c=strcat(a1,'/',b1)

c =

'04/22/2013/9:00:00'

'04/22/2013/9:01:00'

'04/22/2013/9:02:00'

'04/22/2013/9:03:00'

'04/22/2013/9:04:00'

在把上述的字符串数组转化为数字型日期:

K>> datenum(c)

ans =

7.3535e+05

7.3535e+05

7.3535e+05

7.3535e+05

7.3535e+05

第二种:利用数字型日期相加法(发现这种方法不可取,因为单独把字符型时间变成数值型时间,年月日是从最近的所在日的年的第一天开始的,发现第一个时间变成了01-Jan-2013

09:00:00,这时需要把日期起点设置为0,或者直接减去默认的那个日期,即相加后,再减去datenum(01-Jan-2013

),有兴趣的可以做下)

对分别把字符串日期和时间转化为数值型日期,然后相加:

K>>

aa=datenum(a1);

K>> bb=datenum(b1)

bb =

7.3524e+05

7.3524e+05

7.3524e+05

7.3524e+05

7.3524e+05

K>>

a+b

Undefined function 'plus' for input arguments of type 'cell'.

K>> datestr(bb)

ans =

01-Jan-2013

09:00:00

01-Jan-2013 09:01:00

01-Jan-2013 09:02:00

01-Jan-2013 09:03:00

01-Jan-2013 09:04:00

K>>

c=aa+bb

c =

1.4706e+06

1.4706e+06

1.4706e+06

1.4706e+06

1.4706e+06

K>>

datestr(c)

ans =

24-Apr-4026

09:00:00

24-Apr-4026 09:01:00

24-Apr-4026 09:02:00

24-Apr-4026 09:03:00

24-Apr-4026 09:04:00

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值