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

很多人分不开字符数组和字符串什么区别。
& g7 \' Z& K/ ]& u. E+ w>>str1='i love matlab' % 这是一个字符数组,也是一个字符串; V" V4 ~% w* h
str1 =: ?  h6 }! I9 s6 G; U
i love matlab* ]' X2 E- c2 Z2 v/ T4 X
4 S! J, b3 M5 o( j. @1 g: ^
>>str2=['I ';'am ';'a ';'boy'];% 这是字符数组,由于是数组,所以每一行必须具有相同的列数(字符数相同),不够补空格; Y, l( H: E4 c; r
str2 =# b- z$ P; u( F
I( B$ i! A0 [. m, d
am
. f1 G' R) I' ?4 G- R( C# q& c2 Fa
4 S2 w# ?# K6 I! g9 ~boy2 v6 O/ @/ C- }) Z
: C8 _' l  H# G1 q
由于字符数组必须满足每一行具有相同的字符数,所以输入时很麻烦。通常情况我们使用char函数来完成自动补充空格或者创建字符串cell细胞元组。3 i5 t- `+ m" k# i3 T
>>char('i','love','matlab') % char函数会自动补充空格7 G+ ?( S% f7 @/ s6 [& H
ans =1 s" r" \. N7 B9 Y0 _( o2 f0 S5 y
i
0 S+ U  M. `( A2 Hlove: n+ @4 E; H! f- j7 u" t  m7 K0 w' C
matlab
1 X- b& V; Z/ ?6 ^* N: K( P
0 U1 ~& V' M  P>>{'i','love','matlab'} % 在cell字符串中,每个单元都可以完全不同的内容,所以,不需要补充空格。
$ h$ W9 R- O; D- K- ]ans =
' g& `( E4 R. Z! f' j; [, H3 D' r( {'i' 'love' 'matlab'


8 ^4 d+ b6 F# M: z# z3 p下面来看几个例子:

例1:创建一个字符串数组,记住补空格; z, w" f- b4 T3 |0 w
>>S= ['abc '; 'defg'; 'hi  '] (下划线代表空格)/ \2 J$ o5 c% x$ u
S =+ R1 X: G$ R7 b$ [& _
abc
2 u7 W* B, K3 d! xdefg9 X8 |: A" b3 [3 J. S. e# ?% i
hi% R" R( `7 r7 \' t! a

! K  Z) F2 d, T0 b3 N* r$ w>>whos S
1 c% N" B! U5 ~$ C1 W6 R* }Name Size Bytes Class! V! V- {3 y$ s# e5 o; v4 ~
S    3x4  24    char array
4 W  I5 R- ^- N) h9 C! ~
: ?( G5 N& t$ S* ]2 O  l% K# u' r' G例2:下面使用cellstr将字符数组,转换为3*1的cell细胞元组,此时尾部空格会自动删除 :4 E, t: L2 g% k! N. F
>>c = cellstr(S)- ?% f  q) u* h+ |1 L
c =0 D' V, A0 z/ e5 |+ r8 U" @
'abc'
: a; g. ~/ @2 x- d'defg'' K. j( z6 g. u7 C; l" L7 }
'hi'" H5 ^5 N2 q5 P+ q- h- t
; f( T8 N$ \5 Y9 k7 y
>>whos c- ~2 N' P+ H9 E: R0 v5 R) K1 q
Name Size Bytes Class
7 a/ U/ P3 A; o5 P! g0 t9 Uc    3x1  294   cell array
( h) R# D8 q3 K7 D# o; t* _4 }) U) L! |9 I" |8 i) I
例3:再使用char函数将cell字符串转换为字符数组
3 ~  o- n1 M5 u9 L>>char(c)6 h* }! }/ e: p0 ]
ans =% [0 b* f- O6 t  q% G
abc7 k4 S8 X+ n9 Q# ~, Q' \: b
defg
, b5 @6 ?4 w9 Hhi  H0 @5 U$ Z! X
8 T, ?8 U; i0 V( K2 B/ ?
>> whos ans
- z0 _5 _1 `1 kName Size Bytes Class Attributes
$ T( w' y7 K. s) g$ l' F5 S7 \ans  3x4  24    cha

8 |7 e5 U7 g$ I6 t3 e

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-8-23 12:28 , Processed in 0.125000 second(s), 23 queries , Gzip On.

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

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

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