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

了解一下Matlab中的cell和char,字符串与字符数组吧

[复制链接]

该用户从未签到

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

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)

很多人分不开字符数组和字符串什么区别。
! b/ h  g, W! o) i/ S! Z>>str1='i love matlab' % 这是一个字符数组,也是一个字符串" u4 j: n  U% {) l) [0 X
str1 =
& X6 O* x- R& r  ?' J( z4 ^i love matlab
" b3 ]0 [3 U) \+ `. K% f) o! i9 K* W0 f$ U$ X; E
>>str2=['I ';'am ';'a ';'boy'];% 这是字符数组,由于是数组,所以每一行必须具有相同的列数(字符数相同),不够补空格( |4 E4 s  D  ^* N1 C& F8 v. I
str2 =
: U4 m* w6 {0 |# ^/ Z0 N. [I
$ ~7 D% F% z' T) c$ n' o! Gam
4 s5 P- o% F0 l' pa
2 {& q  {$ a4 [( u1 D8 wboy
, K' ]- K" I+ @- s
4 ?0 Q( s5 q; w1 x, A由于字符数组必须满足每一行具有相同的字符数,所以输入时很麻烦。通常情况我们使用char函数来完成自动补充空格或者创建字符串cell细胞元组。# L; |: Y9 v2 l" i9 a7 {4 }
>>char('i','love','matlab') % char函数会自动补充空格
! _1 P0 b0 U, @- ~- }ans =9 r2 _3 r: N* j
i/ H" d" [+ i8 {' D! \, z
love
, G1 ?, @* H2 X. o& ^; J3 t7 S" Amatlab  c7 d( R$ U9 I7 m% v4 l5 U+ ^

6 F9 \+ ^( {1 U>>{'i','love','matlab'} % 在cell字符串中,每个单元都可以完全不同的内容,所以,不需要补充空格。
9 {! o$ Y) m- R2 C+ lans =
9 g6 g+ y# V. \5 a'i' 'love' 'matlab'

- ?( R( t& F' j) J: D2 A; T1 _
下面来看几个例子:

例1:创建一个字符串数组,记住补空格
0 b) s, {/ Y7 X/ ~>>S= ['abc '; 'defg'; 'hi  '] (下划线代表空格)
8 f9 b# N6 D' R' _6 J( RS =
+ z1 _, v" i8 G: A# G0 t. R+ Dabc
7 s* g1 Z9 X# j# I3 {defg
6 R; f/ _5 T7 N& {) T- khi6 a) c, a6 U* O6 L8 ~( ]3 Z
) `" l$ q) o1 b9 X
>>whos S' w, l& G7 |' l& p5 A
Name Size Bytes Class
8 f" |* ?; V1 Z# lS    3x4  24    char array0 Y/ K- Z# }3 @( v6 D9 b: ~
. B# i9 l# ^; m/ d
例2:下面使用cellstr将字符数组,转换为3*1的cell细胞元组,此时尾部空格会自动删除 :2 @( V8 O" G4 @
>>c = cellstr(S)
$ Z" ]& b% t& ~/ T, n* l0 w( R: O0 xc =
( y1 Y7 N. L1 L6 y( z2 d5 m) M  q7 t$ i'abc', L2 y( k; _: y* ?7 \/ @4 b  }
'defg'7 Y9 s! w4 m" w$ s% n; `6 O- M; z
'hi'
! |  C7 p" A, Y; y( K9 ], l! s1 G2 t- Y' L1 z3 O. W
>>whos c
: D0 ~. p( f# b& ~Name Size Bytes Class+ f* l7 F, L2 W7 G
c    3x1  294   cell array# z3 F8 R0 f( S; R
/ M# s' k6 e; _" H. Z' Z7 g" n# ~3 D" ^
例3:再使用char函数将cell字符串转换为字符数组
: b( y& e7 @0 k9 w8 s$ N>>char(c)- ]& ~9 \: J. ^
ans =
& R$ ~% Y8 {/ N2 `5 {: Yabc* r8 d+ x, N: W2 o7 p) b+ C/ |
defg
1 U" X' e# O6 x7 \* j3 k& U. v' |hi5 n8 D; T; u; e( G3 y
0 @7 o: @  A* v9 Q/ y5 M& Q/ k2 X( M
>> whos ans
) Y3 ]" z8 t  Q$ S" c9 W4 E$ ZName Size Bytes Class Attributes
4 _8 e7 ]4 k$ F6 ], o$ ?ans  3x4  24    cha


8 |: F# @$ m3 W& y% T" Z# U

该用户从未签到

2#
发表于 2020-4-22 13:14 | 只看该作者
Matlab中的cell和char
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

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

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

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

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