找回密码
 注册
关于网站域名变更的通知
查看: 436|回复: 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)

很多人分不开字符数组和字符串什么区别。
# G6 O  r2 j  @) M# m2 p>>str1='i love matlab' % 这是一个字符数组,也是一个字符串
8 ]1 N% f8 o. u2 e) _5 ~. Mstr1 =
. G" t0 Y' e$ n+ d+ ui love matlab* R% a  Z5 w, H* R4 z0 u

7 S1 L0 ]( A7 k' v>>str2=['I ';'am ';'a ';'boy'];% 这是字符数组,由于是数组,所以每一行必须具有相同的列数(字符数相同),不够补空格
. @9 X9 T( _; @: N2 p4 H+ s0 gstr2 =
1 Q. A5 v- x4 w6 ZI
, W( f4 v  M8 n9 U, O4 pam( S! q& i. o; w$ b. M9 x7 q; g
a
3 W3 X9 O& C' v; l( |! H/ I7 \& Iboy. `, V/ i6 N. y$ o% M

' @6 i2 C3 K3 @4 ~- N由于字符数组必须满足每一行具有相同的字符数,所以输入时很麻烦。通常情况我们使用char函数来完成自动补充空格或者创建字符串cell细胞元组。( R* f4 v( J; [/ g/ ^
>>char('i','love','matlab') % char函数会自动补充空格3 T% f- \( D; X8 u1 ^+ M* _
ans =
& P+ }8 t. o% p8 b0 ~i
& Q  W1 L* ?" i/ s5 p2 H% I6 N$ Mlove
2 a! L6 O$ d  i8 `* I$ Qmatlab# ^! F* [( W+ `: O  G# Z

, ]! g7 u8 f9 E2 {0 H  {>>{'i','love','matlab'} % 在cell字符串中,每个单元都可以完全不同的内容,所以,不需要补充空格。
9 S5 @9 G3 e* ]5 R5 X9 fans =
  \$ {) c9 ~. t1 d4 l( D'i' 'love' 'matlab'

$ Q* L% ?. m1 x2 z' j$ u
下面来看几个例子:

例1:创建一个字符串数组,记住补空格- K2 u! k) ]/ I" x: L/ p
>>S= ['abc '; 'defg'; 'hi  '] (下划线代表空格)
. L6 v$ w$ Z% e  i& R: q9 l4 f/ n, uS =
1 P; K; ?1 Z( z+ Q. Tabc; A% P% p$ H$ ~' c" y) m9 O% X2 r
defg
: R3 V" |+ Z$ h7 t' e& ohi& |4 k0 u$ W+ e4 @0 R' b- ]
( `+ }% u* Z& {. ]% l  H3 p
>>whos S
- B( ]3 c' R1 _8 l; f. o8 RName Size Bytes Class3 \" s: A. K9 J: ^3 W& H
S    3x4  24    char array
/ X5 `) y' W! X7 j' m
. i9 r8 ]4 y% W# @4 Q4 {例2:下面使用cellstr将字符数组,转换为3*1的cell细胞元组,此时尾部空格会自动删除 :, K4 y# m0 `/ r9 e: u
>>c = cellstr(S)
6 z7 G0 I1 |) u+ mc =
3 ?6 z9 g5 |8 q' a9 @5 j/ Q. U'abc'8 Q# O. R- E+ U' ~1 A3 |- _6 B( z
'defg'
& b, |9 o2 B7 {/ s5 o. I'hi'2 s5 i, |( i/ x* V( ^1 k
  D& b8 t  h/ D+ e) S$ P
>>whos c, w7 @; [+ q/ V9 m5 G0 v; R
Name Size Bytes Class
* i! o: l0 J! j, z1 fc    3x1  294   cell array
! o7 B: s! m) t
' K' v( `' Q3 c$ q' Q: o例3:再使用char函数将cell字符串转换为字符数组
$ \& R: N& ?& ~4 u4 l! H>>char(c)6 n( N9 Q. }( x7 y' s
ans =- O% J1 D- I* o: r
abc$ @  i% H) ~6 p
defg
% H+ y0 E  n6 `/ t; x/ |7 F1 |6 Lhi: I; ?7 Z8 y1 X# ]7 ]. C

; h1 N" B9 a- {5 e>> whos ans
# s  x! x, F* ?Name Size Bytes Class Attributes9 }5 G! W, G* {+ e
ans  3x4  24    cha


& Q9 r4 D- @7 o1 e. x

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

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

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

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

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