EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
用importdata和textscan读取内容为字符串的txt,结果为cell型元胞组。 我想把cell变成char型,然后就自然地想到cell2str,遗憾的是matlab中没有这个函数。 就像没有str2cell一样。 实现str2cell功能的函数是cellstr,将字符数组转换为cell型字符串数组 函数语法为c = cellstr(S) 它的作用是:将字符数组S中的每行分割成为cell细胞元组C的一个元素。并删除S的每行尾部空格 正好与char相反,char是将cell字符串数组转化为字符数组s=char(c) 很多人分不开字符数组和字符串什么区别。# `; ~2 G& g4 T. j6 q7 L
>>str1='i love matlab' % 这是一个字符数组,也是一个字符串
/ N$ G2 G' U2 \str1 =
# ~3 t, K- \. @8 }' q1 qi love matlab6 | F& W. }" ~% A; E1 A
7 @# T8 X8 ?: q$ K
>>str2=['I ';'am ';'a ';'boy'];% 这是字符数组,由于是数组,所以每一行必须具有相同的列数(字符数相同),不够补空格" F; S' d2 y1 {( G$ G9 Q" G# n
str2 =
" J$ ~7 W8 A# |. `2 L5 _ ~4 hI
) R9 |* ` u3 q) Gam. L3 }+ E4 N# W2 S; g+ a7 ]
a, \, K' ]; r3 x# s3 b/ v l: v% Z
boy
, |* {& w# g: K3 H5 O+ r+ I; s& Z$ q: {. G
由于字符数组必须满足每一行具有相同的字符数,所以输入时很麻烦。通常情况我们使用char函数来完成自动补充空格或者创建字符串cell细胞元组。
H' W: o$ ?% v" ?' |>>char('i','love','matlab') % char函数会自动补充空格8 `% P+ T3 ^- F3 l
ans =' Z7 ]. ?$ ?7 x2 ~/ Z; t
i1 t, f9 V' q. x4 y7 _
love
! r* A) W/ f. p) T3 U1 [5 Jmatlab
0 N! t% c. Q+ A! I6 m3 ]. `7 T! `8 q7 R: P9 I7 b X
>>{'i','love','matlab'} % 在cell字符串中,每个单元都可以完全不同的内容,所以,不需要补充空格。8 v) v: ]" q# L s8 v, ~
ans =
6 b# j- X5 n4 M6 r' I+ q* i& @ l9 _'i' 'love' 'matlab'
/ [( ?3 f5 ?) A% `- v下面来看几个例子:
例1:创建一个字符串数组,记住补空格
e, m& m6 j* s% V4 A4 T, `7 |5 u>>S= ['abc '; 'defg'; 'hi '] (下划线代表空格)( J+ @5 Y2 J |; }" |) g) ?2 H
S =
; z* b* w& Q& c6 M& e/ Z5 K) W$ ?abc
0 {+ }5 N0 C, P& F) R6 p3 ~defg0 t2 Q3 v; ~6 W, I) {% \% ]
hi
* x! e" d! i$ Q* R+ F Y. a# P" W! Q6 V) v2 [( i% X& \) h! m
>>whos S, G0 o. d" ^; {% |8 B1 d
Name Size Bytes Class
5 v, b, I8 m+ _. F7 HS 3x4 24 char array
1 i. O% L o- e6 s# q4 O" F* @ E+ Z( s/ U( k2 Q
例2:下面使用cellstr将字符数组,转换为3*1的cell细胞元组,此时尾部空格会自动删除 : ?, A7 y, f. `! X% w2 u! T
>>c = cellstr(S)
. u: b( C* `- O1 l: w6 Zc =
+ V% N& v) ~( g'abc'( R+ r1 z% K7 Z' q5 ~" G
'defg'# Y# {' h$ [4 V6 X
'hi'
* [4 E4 V) a# r+ y* g, O8 y5 o) ~2 G: w% l0 O. ^: O( a6 R7 Z) y
>>whos c5 T m$ k: R, V7 g6 f
Name Size Bytes Class
1 [4 g' M0 l4 a5 S: [+ D" A% yc 3x1 294 cell array9 V% d/ G. w2 W: L1 w5 M
" l+ n3 P4 m% _
例3:再使用char函数将cell字符串转换为字符数组
6 U( h# o# A, @* e. S>>char(c)7 ^0 \) C% X) d- `
ans =; z5 A. W) O( E& ^- ~* M3 b
abc0 w. r0 P( Z8 T$ k3 H5 }3 n, e4 Q
defg
- G m. a: }" e0 r3 C5 X x" ohi
; L7 Z( V+ r. F$ i4 y1 O' l) e' `+ `
>> whos ans# k: B1 u, M( v1 Y
Name Size Bytes Class Attributes, E! a, t/ z; O$ G0 k
ans 3x4 24 cha ; l+ j9 v4 S; P* a; C
|