找回密码
 注册
关于网站域名变更的通知
查看: 414|回复: 1
打印 上一主题 下一主题

Matlab里的cell和char&字符串与字符数组

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-3-20 09:37 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
4 S: Y& F/ S9 ^$ @6 \) t, Y  u
用importdata和textscan读取内容为字符串的txt,结果为cell型元胞组。1 O8 g- h7 |9 E# s# E! r
) E/ V- L  ?# a# {; y$ A3 D: \* r. G6 h
我想把cell变成char型,然后就自然地想到cell2str,遗憾的是matlab中没有这个函数。( i; D2 G& \! M2 t# K! ~

" I: X2 F+ `! I# b+ w就像没有str2cell一样。, |1 A4 k0 y3 i9 e8 ]- O4 @% x5 s  N
9 j4 k9 w: \9 E7 I$ l# Y0 N+ p/ U
实现str2cell功能的函数是cellstr,将字符数组转换为cell型字符串数组3 O- h3 R- E' {# S8 F
- l1 n: z, b: _( R( h. I8 q2 _* q
函数语法为c = cellstr(S)
, a0 t! z- {  y- U1 g: ^; O& e( e% J
$ M' t* |! P& S" ]它的作用是:将字符数组S中的每行分割成为cell细胞元组C的一个元素。并删除S的每行尾部空格
; A/ n, b1 _; j1 q+ y+ f) i( a
& u9 K# I0 i/ @! L8 {% j2 T正好与char相反,char是将cell字符串数组转化为字符数组s=char(c); x% J3 _! G1 @
7 w1 g+ ~+ _8 H( N

/ _' l0 j5 w: a* U6 O3 s7 {
( L9 k% z  T& A7 Y7 ?1 Z; }3 K ! s5 u  p, K9 v* e+ N% ~' c
) P4 v& ]0 k( a3 R) j
很多人分不开字符数组和字符串什么区别。
- v7 o# H3 O( L& I$ y+ p>>str1='i love matlab' % 这是一个字符数组,也是一个字符串7 _/ p* O' F5 K2 \. i1 M0 Z9 p
str1 =' B1 D/ H5 q) T
i love matlab5 b8 E8 ~( C& r9 J& t+ u

8 D6 n0 k% f* c7 g  d+ _: C>>str2=['I ';'am ';'a ';'boy'];% 这是字符数组,由于是数组,所以每一行必须具有相同的列数(字符数相同),不够补空格: v# s3 b7 E# @* J+ H$ f
str2 =
6 S6 }" D# u& J2 k4 J$ l8 cI; m8 T1 [" \' O2 |. a% h
am
' P  e! ?( p1 S5 T* G) b. S( ^a3 G2 d8 G9 f/ R
boy
; s- I$ x+ W- l: K8 @- ^  Y
+ w# x/ W* v$ v; ?; i/ ]  f; ]7 n/ T# `由于字符数组必须满足每一行具有相同的字符数,所以输入时很麻烦。通常情况我们使用char函数来完成自动补充空格或者创建字符串cell细胞元组。8 P9 F/ ~% w& g6 p0 x) Z
>>char('i','love','matlab') % char函数会自动补充空格+ I5 {3 d6 F7 @. i! D
ans =
2 o& L& l0 `  m+ n# ^9 C& Zi
& z! o' W7 E3 Mlove
0 i+ `: w- \6 r. ?9 ^$ _6 L# \; \matlab; ]5 P! u6 e% [" ?1 X
  _- ^; W1 L3 R
>>{'i','love','matlab'} % 在cell字符串中,每个单元都可以完全不同的内容,所以,不需要补充空格。
4 m2 o1 V, u7 r. D( Ians =0 c: l+ s5 l6 n% z) {( I: [
'i' 'love' 'matlab'1 C7 Q( W. [3 A5 ?7 Y
; b# N- e7 E4 ~! h
; s* z/ E8 u( z$ \* r' w

' y1 R5 |+ [+ q, G* r: J- {
. v, {: I8 P9 U4 ~下面来看几个例子:  {) A' k& G/ |, N2 i1 E6 ]. t; o6 ]$ _

$ F, W% X+ u/ c! W例1:创建一个字符串数组,记住补空格
) V; |% M6 S6 _+ y! I>>S= ['abc '; 'defg'; 'hi  '] (下划线代表空格)$ x% H) l( B9 b( x1 \9 j
S =
* {, }8 X* W0 x7 E- sabc- }& y0 X2 e$ Y  {9 _) J* A' D$ p
defg
% Y( R8 I$ @7 thi
* D6 s3 a9 c1 j
4 k2 {/ b* k' {- T2 h>>whos S- t' g* J5 Q/ @. a) z+ `* Q$ |) |
Name Size Bytes Class- i0 `8 H/ W+ k3 F' V0 O& O+ t
S    3x4  24    char array
( y& x. r9 W" k0 J6 e0 O% ~1 D7 _# x- V" ^0 C- y, O. j
例2:下面使用cellstr将字符数组,转换为3*1的cell细胞元组,此时尾部空格会自动删除 :% c0 j  ~  C! {/ B, |/ N2 r0 ]( d
>>c = cellstr(S)
0 g! J; ~4 L3 {* Mc =# x2 p$ l' c8 g! i+ _. R
'abc'7 p) O4 q3 r, v0 K, s
'defg': T2 d  B3 n% b8 d
'hi'8 p6 h3 g- f' m: ]* ~& E" l" z

5 I& L3 d. m7 V& X$ O>>whos c
- P9 D6 g- V7 AName Size Bytes Class6 T( K. ]3 J/ W+ v
c    3x1  294   cell array
9 p" W  O; r  J# p2 v0 t
& ~$ Q( z6 i; O6 l1 E例3:再使用char函数将cell字符串转换为字符数组
. q, D; l: \8 {4 ^5 Y% X>>char(c)
9 [/ Y$ P9 E) p4 ?5 h1 ?, q* O- _ans =
3 A, [% L& _9 |# kabc$ f  P) D8 \+ O0 p- K6 L
defg) h* `& A- Z! Q' t1 e6 O' D+ o
hi, ~9 ]- i) `5 [2 J
2 L# A  D! W7 `' B( p8 C+ Y$ s
>> whos ans
: F  `, ]! n5 F" p  w4 yName Size Bytes Class Attributes: A" v+ Q, }7 x
ans  3x4  24    char
  • TA的每日心情

    2019-11-29 15:37
  • 签到天数: 1 天

    [LV.1]初来乍到

    2#
    发表于 2020-3-20 18:09 | 只看该作者
    Matlab里的cell和char&字符串与字符数组
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-11-24 13:16 , Processed in 0.156250 second(s), 24 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

    快速回复 返回顶部 返回列表