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

很多人分不开字符数组和字符串什么区别。. X" T8 o. W+ S9 ~
>>str1='i love matlab' % 这是一个字符数组,也是一个字符串2 V+ B( x0 N" t0 Y
str1 =
( K. X- e, {  z' ?% p& Di love matlab
! ]! R) C! O$ Y& e* A& E( ^' Z
' F. Z" z' o7 U>>str2=['I ';'am ';'a ';'boy'];% 这是字符数组,由于是数组,所以每一行必须具有相同的列数(字符数相同),不够补空格
* e, \9 E# q$ C' }str2 =, r0 u1 V& J/ ^1 i5 E
I; m1 P: A# d! ?7 j' M; P+ a! t
am
  t5 o7 W6 [) n! za
; p/ @; H& o) L0 fboy5 f; E" n$ o) ^6 A

3 C! y  W( g) V- g& {. F4 F5 M, q由于字符数组必须满足每一行具有相同的字符数,所以输入时很麻烦。通常情况我们使用char函数来完成自动补充空格或者创建字符串cell细胞元组。0 t* C( m$ R0 x0 v- p3 ]. S) O
>>char('i','love','matlab') % char函数会自动补充空格, I' J! A+ ]+ Q$ s, w- }
ans =* I$ c3 j) N$ N, i- ]7 O
i8 Y+ b' L1 L  U) Z, l0 s3 g
love# _, n8 s! y( W. x
matlab1 r. H; }) D* @
3 ?+ I( b# }8 V. ^3 ]9 v; m2 N) }  V4 O
>>{'i','love','matlab'} % 在cell字符串中,每个单元都可以完全不同的内容,所以,不需要补充空格。
8 M5 a  z, c  Mans =
7 b; ]# x) z" @$ ^* A1 {9 S/ }* l'i' 'love' 'matlab'


0 _: i+ v1 b% s, h$ z下面来看几个例子:

例1:创建一个字符串数组,记住补空格; j, i6 E9 J; |2 t/ X
>>S= ['abc '; 'defg'; 'hi  '] (下划线代表空格)) A! i. E3 d8 n5 w6 S: N
S =
- |7 W! h% ?3 x$ }abc6 t0 p) G/ \6 [; V) Z2 p
defg
: L, }* D( {' L+ ]% v; J$ o' q  B; `hi
5 L5 |* O. \# [2 y6 U! L5 z! h# e$ s# C  U
>>whos S
# i% l: m4 t* dName Size Bytes Class
! K4 v* i; o( B0 v! \* h8 oS    3x4  24    char array
4 a$ K" v0 u  h6 `& W2 J" h% W0 c( s9 |7 }$ T3 C
例2:下面使用cellstr将字符数组,转换为3*1的cell细胞元组,此时尾部空格会自动删除 :1 `# n4 N( C9 `7 ]9 a5 X
>>c = cellstr(S)
- g( _( ^0 ^& W0 c! t) b9 C5 i5 mc =2 f- p/ j9 a1 ^) N1 p
'abc'9 c( D% l. v" ]5 w3 {+ j9 O
'defg'3 e: @/ _9 p3 w! A3 l, c
'hi'
. M: N+ H" Y8 x, q  w( n
" r. ~5 W8 y7 b" D9 H- N+ ^>>whos c& ?, J! J/ H; Q6 G0 e) X
Name Size Bytes Class; S+ k0 B6 V/ r, V/ X, K
c    3x1  294   cell array
8 }5 w9 m. [( {1 @' u8 z/ l( v' N. }/ s: K  U: N8 T5 _: B
例3:再使用char函数将cell字符串转换为字符数组
$ O3 r1 a1 u7 u- _>>char(c)0 \, p4 i! t* t3 H) A0 |- \1 D2 d
ans =9 p( o, }. ]: W7 F  p+ ~4 z9 ]$ f
abc6 {# c1 p. X1 [
defg
6 M5 p- u! J" U3 O+ b3 ?' A6 \hi; s7 x; v5 z2 |4 i6 P0 f3 _

" R" v/ r+ d* H4 I6 D# n>> whos ans
  t+ u6 I1 q' K7 O6 \. UName Size Bytes Class Attributes7 Z3 b. l; y5 h2 f, I/ {
ans  3x4  24    cha


9 |" v5 Q1 s  P! U4 O/ p

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-8-21 09:10 , Processed in 0.125000 second(s), 23 queries , Gzip On.

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

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

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