|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
4 Q- [( J+ T3 x1 C7 b用importdata和textscan读取内容为字符串的txt,结果为cell型元胞组。
, p3 T" X( U; G$ N( @9 ~: W: c) T0 i2 e' ?
我想把cell变成char型,然后就自然地想到cell2str,遗憾的是matlab中没有这个函数。
% s" k# W0 j' m# `7 y
+ x2 u3 O* K- M+ A- ^3 @* s0 T就像没有str2cell一样。' J- Z3 ?: X5 p" X( E% ], n0 }5 [
9 r! Q$ N" b. k2 W" M实现str2cell功能的函数是cellstr,将字符数组转换为cell型字符串数组
# x& i) {2 s# F) v( O# @3 G- M9 r# H9 t$ O3 V! |6 G, n
函数语法为c = cellstr(S)) `. j& j2 c* G8 M& [
' N" D3 h. S! X* S& x它的作用是:将字符数组S中的每行分割成为cell细胞元组C的一个元素。并删除S的每行尾部空格 [# C* ]: f, b4 c! h# O; C
% E: E5 j* J7 [
正好与char相反,char是将cell字符串数组转化为字符数组s=char(c)
- k. a% Y( i6 e4 B$ M# _0 T4 A- i" u) J8 O5 J# W# _
! J$ V0 p! ]7 v% _
$ P' {% e. w, ~. O6 v3 I
8 p& ]7 H5 f+ z2 o% @
_; S: B' U9 o9 S& w# K7 x' u很多人分不开字符数组和字符串什么区别。
4 J H1 R' Y# ^! o7 K6 |>>str1='i love matlab' % 这是一个字符数组,也是一个字符串
4 N# |3 U j9 U( j5 Z6 |9 `3 A0 J; ostr1 =
: e2 r, ~$ p; H G" K- ci love matlab/ v/ {% @. a# g
/ g1 g) A) R% o( |4 }: f0 M. r>>str2=['I ';'am ';'a ';'boy'];% 这是字符数组,由于是数组,所以每一行必须具有相同的列数(字符数相同),不够补空格" C9 h5 ?" o1 Y
str2 =
2 w! U% C. G" R hI
; l" C5 j1 o9 p+ j9 a7 V7 K* \9 }am
# t! z$ ~0 r! | ma
7 j8 l6 _3 r4 h; V) n; Hboy
8 f5 j6 J7 s+ A
& g3 { w( u# E( r# M0 A3 u由于字符数组必须满足每一行具有相同的字符数,所以输入时很麻烦。通常情况我们使用char函数来完成自动补充空格或者创建字符串cell细胞元组。1 a7 c2 w( U s& @/ V- b+ c r! d
>>char('i','love','matlab') % char函数会自动补充空格9 e2 V7 z3 C( [1 m3 p e6 x; b! p
ans =- B+ l6 s Z" q1 n( I! ~
i/ q+ t* ]( K* Q
love$ \! F$ v/ x S( C( U$ q
matlab
8 T7 m' z3 l# x1 N$ d
# V) F* j3 @, x$ s6 K& a. S>>{'i','love','matlab'} % 在cell字符串中,每个单元都可以完全不同的内容,所以,不需要补充空格。" L, l- h$ k$ N! y5 H6 k
ans =3 L3 o5 C7 r& U
'i' 'love' 'matlab'4 D& C+ k( S5 j; F- v, X
( R O+ D/ k/ K+ a% c
0 I! U: r* u% p0 a% g/ `8 _. D4 u* r+ {+ N8 Y
% M' [5 n8 A0 c9 v
下面来看几个例子:
4 u/ T0 U9 g9 E4 U2 N: B
0 h6 O' ~; D' O( b& f例1:创建一个字符串数组,记住补空格# G/ d% B$ Y0 d f+ M/ |: E, ^
>>S= ['abc '; 'defg'; 'hi '] (下划线代表空格)" D7 K6 n9 X* W$ n2 |+ k
S =& |" O9 a$ R6 ?
abc8 [9 V4 o. |- n k- |
defg+ Q* \8 w% S( n4 W/ N/ ^, g
hi
" ~' u6 t: d+ j2 m6 R8 m* q2 P. [/ E4 {4 z; W/ }1 u* x
>>whos S$ y _9 \. }, R8 q: y
Name Size Bytes Class
1 e( |* a' U bS 3x4 24 char array, |0 X( x& c) Y) Q+ f8 u
_# H' M0 `% E
例2:下面使用cellstr将字符数组,转换为3*1的cell细胞元组,此时尾部空格会自动删除 :+ q. l- _# l* q
>>c = cellstr(S)
+ H- r2 y0 L! O+ u5 Gc =8 ?2 ~- J: A3 o
'abc'
. A- S) Y, s) O M' e6 o( V" {- t'defg'" A1 X$ w+ L1 r c
'hi'
' D* {6 ^# x, E7 E7 s6 l* |
( ]5 i# n$ H6 ~0 B! r& }6 q>>whos c9 n4 ?( X* N& E/ w" A$ V$ P8 g
Name Size Bytes Class
( s' @7 G3 z: Y) ^+ x1 X7 d( e jc 3x1 294 cell array
# ?9 Q+ k+ i# L2 t: j+ h
6 _5 C* L; q- K! w4 H例3:再使用char函数将cell字符串转换为字符数组( F5 ]! \& V" X
>>char(c)* h" B T- n* a+ m5 C6 ^
ans =) R- e& k7 Q, P! m
abc" b, j8 z! |: l3 S1 j
defg' w: w& Q3 \: X0 n6 E
hi4 W+ N+ g9 j# A! k5 O. S9 c# f, C
) I' x; U: I/ S7 v" |0 X
>> whos ans& \7 B$ Z, d! _% ~
Name Size Bytes Class Attributes
0 A- h: q9 b1 V3 B5 q5 fans 3x4 24 char |
|