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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
1 k  g$ m: b1 ~* a: i
用importdata和textscan读取内容为字符串的txt,结果为cell型元胞组。
; i* K- w. c9 C1 Q4 A2 E$ I( c, w! B* Z; T6 O/ g
我想把cell变成char型,然后就自然地想到cell2str,遗憾的是matlab中没有这个函数。
/ i0 `3 Z) `' q7 O
# K7 a% r0 V7 B$ N就像没有str2cell一样。
) Q# g9 S5 V9 p0 Q& c! A& u  @7 c0 r2 B: A& P
实现str2cell功能的函数是cellstr,将字符数组转换为cell型字符串数组# C, _. a8 B1 [+ P& l( P
( c& n. P3 G& r: @5 w' k
函数语法为c = cellstr(S). z6 B1 ~  P9 P

8 D0 s9 ]* d! Z' q* e7 Y, s它的作用是:将字符数组S中的每行分割成为cell细胞元组C的一个元素。并删除S的每行尾部空格  d6 j2 ?3 L2 [# t/ C3 h

9 _+ V0 c5 z! U2 B4 g/ H' J正好与char相反,char是将cell字符串数组转化为字符数组s=char(c)" n: D7 r7 Q% Y3 Q
: `* ~8 M$ A& W

' ~5 h- }6 C/ U2 W( V& }+ P( N! ]# f) _) V* H7 ^7 A3 E% ^" g
2 n. b1 M6 H4 |( L9 J# ], O" M

1 |, {$ P6 J9 I! D/ B很多人分不开字符数组和字符串什么区别。
1 z% y+ |. @" e' V0 |4 ^, }>>str1='i love matlab' % 这是一个字符数组,也是一个字符串* f' [8 ?# K" p
str1 =
0 x3 N; s* ^: m/ h" M. D3 qi love matlab
) v: \9 A  R2 j+ X) e' g
" G4 V* l3 n6 ^8 q% \$ G>>str2=['I ';'am ';'a ';'boy'];% 这是字符数组,由于是数组,所以每一行必须具有相同的列数(字符数相同),不够补空格3 M2 ]/ q6 |/ k& }5 Q) S  u# t
str2 =
9 I8 _/ O: B4 YI
( \+ o+ x; e: Z, wam
1 a! ]# O) V0 E/ V$ ia
( Y$ r! x+ }. B9 ~) Yboy
/ b0 D# w; X8 r" N. H/ X3 x6 g( z7 g! M
由于字符数组必须满足每一行具有相同的字符数,所以输入时很麻烦。通常情况我们使用char函数来完成自动补充空格或者创建字符串cell细胞元组。
& W* f! y. P; q( u- a0 Q>>char('i','love','matlab') % char函数会自动补充空格# O" p# T4 H7 L4 x. [
ans =, X6 ~; e$ _( ]2 T1 V( ^
i# T$ O/ L: }! R# C0 a
love; L  z4 ~, H  c: d- k% o
matlab
' U( ^* ~! ?7 C  S/ B8 S
* J/ Y0 C/ o" i6 ?8 Q; b/ s>>{'i','love','matlab'} % 在cell字符串中,每个单元都可以完全不同的内容,所以,不需要补充空格。9 t0 s3 y7 _% d6 b9 K* @$ q
ans =6 h' v, x2 |3 u* _) ?2 j
'i' 'love' 'matlab'; v/ e# u4 G# ]5 u  e( {
" g. u- }" e& z' y

" \4 |8 ^$ W! Z4 r6 a( [# {$ \" L0 n# ]1 y1 o/ v# g* x, K# E* \

' N3 k! h4 s. J' z+ o* ~下面来看几个例子:* C$ }' |& L& \
# J4 Q% R' C+ E- ]# K6 {
例1:创建一个字符串数组,记住补空格4 _: C" n: y& |% y* a- M' G
>>S= ['abc '; 'defg'; 'hi  '] (下划线代表空格)
" `: M! V3 q% v5 i! Y5 VS =& w+ I8 X+ p/ P: f, x# {: o5 F. M
abc1 p3 [$ G* T8 u
defg. M$ d& w) i& y3 I! b! j
hi) G4 z% O: `& l1 Z

4 Z6 |0 D6 B' o/ Q: s% b>>whos S
5 h  [  K9 @3 M0 u: Y( z; B" DName Size Bytes Class
% `! D( Z- [0 N! k: L# }% H, |S    3x4  24    char array
: w; o. Q: }' A/ W: V8 E& A9 `
- s9 w4 D2 a) a0 M例2:下面使用cellstr将字符数组,转换为3*1的cell细胞元组,此时尾部空格会自动删除 :) W) `2 d+ `/ Z, a: H7 a
>>c = cellstr(S)0 T6 s! A0 M" u5 a9 I
c =, C: F4 D' P& Y9 Z1 m; R6 u* M
'abc'& r: J2 E* S2 k: |/ W/ B  S
'defg': f9 z' m' h8 Z1 c6 K, U
'hi'7 _4 j& z3 ?7 M& u$ \

8 I. |0 J9 i% z$ C2 r% |>>whos c: g; L% A  G8 ?9 E" m
Name Size Bytes Class
  u2 m) S  Y1 v/ @" u6 H8 p  uc    3x1  294   cell array
# P( @( k  U9 K4 |; o0 B7 ^% e6 ?5 R) ^' `: ?
例3:再使用char函数将cell字符串转换为字符数组
! J! t9 A* J6 X3 H% v/ `  Q>>char(c)8 S( ?0 s0 o0 y. m3 A2 N
ans =1 h" h% s+ h/ j- T3 }; `  f5 n
abc
( N# u5 y! q/ c- v$ ^& m; zdefg
8 u2 ^# ^8 W! g1 e. y" vhi
; V+ K2 _$ C" e0 x2 m- f2 R, u6 K' a% ^. K* t
>> whos ans
, P' g% y' i) @9 r: e9 U/ |, B  ?Name Size Bytes Class Attributes
" }: l" V4 h8 \/ p2 q7 ]4 i9 `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 09:44 , Processed in 0.156250 second(s), 23 queries , Gzip On.

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

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

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