|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
, k0 m4 y. W( ?4 v- ]
用importdata和textscan读取内容为字符串的txt,结果为cell型元胞组。7 P6 O+ n$ b! P `+ Q' [4 l
; Q0 e$ r0 p! K" E4 T
我想把cell变成char型,然后就自然地想到cell2str,遗憾的是matlab中没有这个函数。& c5 l& V* k3 m
. N3 L, ^& f/ G0 y1 F就像没有str2cell一样。
3 m+ K+ h1 |, {0 y/ J7 p" I8 X' d3 e7 i: J9 h; f
实现str2cell功能的函数是cellstr,将字符数组转换为cell型字符串数组
) z' {+ F1 ]2 `) @
% q* _+ w' d9 t% x' x# U函数语法为c = cellstr(S)
7 O/ ]+ ^' Z3 O, L: k% H2 ^ ~. b
i- g2 E4 z3 J它的作用是:将字符数组S中的每行分割成为cell细胞元组C的一个元素。并删除S的每行尾部空格
1 K9 C0 S! o L% S2 ^% ]
- z' L; T6 W/ e$ K6 R- g正好与char相反,char是将cell字符串数组转化为字符数组s=char(c)4 ^6 R f8 O. z
5 o# ?. `7 S0 V" o/ G$ v1 s 9 P3 K" I, o3 z0 Y q
, ]: b) U& D4 _. z, L5 P9 i$ Z
4 l! I! e/ q: }) g; ^1 R J2 h3 } M3 g8 n, K$ u- {6 R' `
很多人分不开字符数组和字符串什么区别。
/ m) y) Z3 _0 v" Z8 g>>str1='i love matlab' % 这是一个字符数组,也是一个字符串, g. U1 f* a0 g! Z3 W9 m
str1 =
; m v3 P" x+ C' w: li love matlab2 u/ @/ O: Y9 U# G9 y: D
$ f1 q' F( c- _1 D" @0 W3 V' C
>>str2=['I ';'am ';'a ';'boy'];% 这是字符数组,由于是数组,所以每一行必须具有相同的列数(字符数相同),不够补空格
+ c4 Q5 D3 }1 x: Kstr2 =* h1 Z" Z4 W& ?3 V% f
I6 n% o" _9 J$ N- M
am) V+ ^; X3 ~7 f$ ~
a
6 k8 A8 P9 {& @9 Y8 F% h1 Tboy9 L& ^+ y( @8 x# b/ b
9 K8 w% L8 ]5 i0 M由于字符数组必须满足每一行具有相同的字符数,所以输入时很麻烦。通常情况我们使用char函数来完成自动补充空格或者创建字符串cell细胞元组。$ p) `; h' c2 v& Z% q9 a
>>char('i','love','matlab') % char函数会自动补充空格. n/ c$ |5 @ L+ K, h$ L) F
ans =
4 ]* h% O V: n$ Mi
* i) Z& X) y% ]' l2 |love" j! D* K% D1 b5 B- s% _5 d
matlab
" ?2 s) e! H& o" s: W* u1 M9 [" F! S( s
7 C$ I! P: f1 g% j( J/ Z>>{'i','love','matlab'} % 在cell字符串中,每个单元都可以完全不同的内容,所以,不需要补充空格。
8 k- f( m& ^# R% p+ rans =
' s$ l% a0 J% I# |" u3 V'i' 'love' 'matlab'
: C' {! [$ \ n5 s. B0 J4 f; ?: W8 ]8 @( I1 W& ]+ l1 h
# H3 m& b" B' f/ O2 z" `* }7 |% a* _9 o2 U* h( d/ ?# z
; F% @- b/ A8 r9 [. P' r j) W下面来看几个例子:0 v) R& t7 t2 Y4 B* ~# S- \
+ b3 O8 d$ g( _" E, L- r例1:创建一个字符串数组,记住补空格
6 o- b. L2 y. m7 W9 k>>S= ['abc '; 'defg'; 'hi '] (下划线代表空格)
2 [" W! `$ x) {S =8 O/ P9 D) Y2 m! q3 u6 `% @$ E! v3 `5 @
abc
& v' b+ N5 o6 t3 b0 Mdefg
" t3 C; W% q/ N1 H( chi2 ? Z. ]7 N/ v i: z6 ]4 i @
3 [& D$ M% {) Z5 u6 @' |2 j; _
>>whos S+ B( M( {, I* @
Name Size Bytes Class& \2 ]! p2 A* A7 m2 H& R
S 3x4 24 char array' K( Q: ]# d( V+ |2 z
9 ~3 K6 O& O+ i v# \1 \
例2:下面使用cellstr将字符数组,转换为3*1的cell细胞元组,此时尾部空格会自动删除 :; g& s5 J5 F2 H& q1 P6 q! ^+ `
>>c = cellstr(S)
- r" S6 @+ E" o8 Uc =# L- [9 N- }$ N2 ^3 |4 z8 \
'abc'
; V# X+ N+ T; S8 h! W2 u% P/ R'defg'
) g% K6 ]; e/ k' t) J4 c0 L! l'hi'
+ e* r8 t% o: F! N7 @( ^
- M0 Q2 b- x- A4 `/ S>>whos c
( X+ D; s3 D0 D! kName Size Bytes Class; ~ ~* F; @: A4 _ ^! s; v+ n
c 3x1 294 cell array
( \, x9 D! `" u+ ?9 W8 U
$ Q* i% _( G* u) ^例3:再使用char函数将cell字符串转换为字符数组6 H0 U6 H g0 j8 ^! R3 k. k# z
>>char(c)0 X2 A- A. }9 C4 h
ans =
% X+ \. a, \! e8 j7 r* yabc% v l& l9 m7 O$ e, v9 T
defg9 `2 q `( G% I) Z5 M
hi9 Y4 A' }6 o1 f w
8 [ U) \7 L( N- D# U: I>> whos ans ?0 v( T0 {- A+ e/ o8 |: e
Name Size Bytes Class Attributes
, u) |% f5 f! l1 Hans 3x4 24 char |
|