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) 很多人分不开字符数组和字符串什么区别。
& g7 \' Z& K/ ]& u. E+ w>>str1='i love matlab' % 这是一个字符数组,也是一个字符串; V" V4 ~% w* h
str1 =: ? h6 }! I9 s6 G; U
i love matlab* ]' X2 E- c2 Z2 v/ T4 X
4 S! J, b3 M5 o( j. @1 g: ^
>>str2=['I ';'am ';'a ';'boy'];% 这是字符数组,由于是数组,所以每一行必须具有相同的列数(字符数相同),不够补空格; Y, l( H: E4 c; r
str2 =# b- z$ P; u( F
I( B$ i! A0 [. m, d
am
. f1 G' R) I' ?4 G- R( C# q& c2 Fa
4 S2 w# ?# K6 I! g9 ~boy2 v6 O/ @/ C- }) Z
: C8 _' l H# G1 q
由于字符数组必须满足每一行具有相同的字符数,所以输入时很麻烦。通常情况我们使用char函数来完成自动补充空格或者创建字符串cell细胞元组。3 i5 t- `+ m" k# i3 T
>>char('i','love','matlab') % char函数会自动补充空格7 G+ ?( S% f7 @/ s6 [& H
ans =1 s" r" \. N7 B9 Y0 _( o2 f0 S5 y
i
0 S+ U M. `( A2 Hlove: n+ @4 E; H! f- j7 u" t m7 K0 w' C
matlab
1 X- b& V; Z/ ?6 ^* N: K( P
0 U1 ~& V' M P>>{'i','love','matlab'} % 在cell字符串中,每个单元都可以完全不同的内容,所以,不需要补充空格。
$ h$ W9 R- O; D- K- ]ans =
' g& `( E4 R. Z! f' j; [, H3 D' r( {'i' 'love' 'matlab'
8 ^4 d+ b6 F# M: z# z3 p下面来看几个例子:
例1:创建一个字符串数组,记住补空格; z, w" f- b4 T3 |0 w
>>S= ['abc '; 'defg'; 'hi '] (下划线代表空格)/ \2 J$ o5 c% x$ u
S =+ R1 X: G$ R7 b$ [& _
abc
2 u7 W* B, K3 d! xdefg9 X8 |: A" b3 [3 J. S. e# ?% i
hi% R" R( `7 r7 \' t! a
! K Z) F2 d, T0 b3 N* r$ w>>whos S
1 c% N" B! U5 ~$ C1 W6 R* }Name Size Bytes Class! V! V- {3 y$ s# e5 o; v4 ~
S 3x4 24 char array
4 W I5 R- ^- N) h9 C! ~
: ?( G5 N& t$ S* ]2 O l% K# u' r' G例2:下面使用cellstr将字符数组,转换为3*1的cell细胞元组,此时尾部空格会自动删除 :4 E, t: L2 g% k! N. F
>>c = cellstr(S)- ?% f q) u* h+ |1 L
c =0 D' V, A0 z/ e5 |+ r8 U" @
'abc'
: a; g. ~/ @2 x- d'defg'' K. j( z6 g. u7 C; l" L7 }
'hi'" H5 ^5 N2 q5 P+ q- h- t
; f( T8 N$ \5 Y9 k7 y
>>whos c- ~2 N' P+ H9 E: R0 v5 R) K1 q
Name Size Bytes Class
7 a/ U/ P3 A; o5 P! g0 t9 Uc 3x1 294 cell array
( h) R# D8 q3 K7 D# o; t* _4 }) U) L! |9 I" |8 i) I
例3:再使用char函数将cell字符串转换为字符数组
3 ~ o- n1 M5 u9 L>>char(c)6 h* }! }/ e: p0 ]
ans =% [0 b* f- O6 t q% G
abc7 k4 S8 X+ n9 Q# ~, Q' \: b
defg
, b5 @6 ?4 w9 Hhi H0 @5 U$ Z! X
8 T, ?8 U; i0 V( K2 B/ ?
>> whos ans
- z0 _5 _1 `1 kName Size Bytes Class Attributes
$ T( w' y7 K. s) g$ l' F5 S7 \ans 3x4 24 cha 8 |7 e5 U7 g$ I6 t3 e
|