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

很多人分不开字符数组和字符串什么区别。) `7 ~9 Z' @) S7 L5 t2 z5 V
>>str1='i love matlab' % 这是一个字符数组,也是一个字符串
. o# l. @+ ^& R! Q% `( dstr1 =0 A. F) c0 q+ A
i love matlab
8 d2 Z" a0 @: |! F3 P
" J% O' J# ]8 D9 F" ~1 C5 b>>str2=['I ';'am ';'a ';'boy'];% 这是字符数组,由于是数组,所以每一行必须具有相同的列数(字符数相同),不够补空格
3 _# U3 J( Q2 z: ^( v/ Estr2 =, }- a; j) ]% Z, E( X, i7 O8 s! \
I/ Q4 n- Q0 T' N. s/ s7 N
am
0 B8 G) j( _+ f. e8 Qa
5 f' Y0 m) M+ m5 N# mboy
) V$ r, b- ]9 Q  k- q% j3 M" g. q- O% c6 ^) R
由于字符数组必须满足每一行具有相同的字符数,所以输入时很麻烦。通常情况我们使用char函数来完成自动补充空格或者创建字符串cell细胞元组。. w) j; P  f# F. a1 j5 B0 ~$ O
>>char('i','love','matlab') % char函数会自动补充空格8 p* z) P, Q) ?8 v. G3 K$ w  b
ans =9 j* D- d3 S2 ?  `. ^
i
5 E1 {2 h3 N/ ]; \love9 e" F: `. @" X, K+ m
matlab. ^- H9 J1 `% p

5 r0 w4 I+ h$ i, g+ {) v>>{'i','love','matlab'} % 在cell字符串中,每个单元都可以完全不同的内容,所以,不需要补充空格。* J* R6 m( {* M6 P8 Y0 z! _/ w( N
ans =
: A$ o/ V+ k3 `; I% Z' x. Y* j/ C6 o'i' 'love' 'matlab'

8 e- \0 f9 v3 L
下面来看几个例子:

例1:创建一个字符串数组,记住补空格' U  _4 x1 V( i
>>S= ['abc '; 'defg'; 'hi  '] (下划线代表空格)
: T; O4 ?; j* B! JS =
& {& p) T( d$ Y% u2 R* k# }abc
7 P2 z/ F. w* Fdefg/ H& j3 A* ?( \4 x( ^3 I+ r) S
hi
5 M5 k% O% c  ~  ?7 [) p3 g" h$ R2 L. e( g
>>whos S
) ^9 o' u' }4 `/ [Name Size Bytes Class% g/ d6 x, T: M: h6 A
S    3x4  24    char array
2 L6 j- D/ V" w- ~1 W$ C- c: g1 f( [, b2 g1 b1 ]: K7 v3 K8 U
例2:下面使用cellstr将字符数组,转换为3*1的cell细胞元组,此时尾部空格会自动删除 :
# I5 a7 |& H0 r( i$ Q>>c = cellstr(S)+ ?$ i- }  d" ^
c =0 ]' T# V1 x/ d7 v1 C) d
'abc'
( Y# g5 U& J- c' b1 E'defg'$ A# z1 U1 r6 n4 c- o+ c
'hi'$ i) z3 J, ]* z9 Q& R

! z3 w7 L, L. H) `>>whos c
1 M, Y8 B+ O# P9 R( N! D" qName Size Bytes Class
. Z2 w9 Z) P0 tc    3x1  294   cell array) }- r6 |& Y5 }& z. ?5 ~4 d, ~( H3 Z

" U. h2 q9 F: _9 n5 W" |0 O例3:再使用char函数将cell字符串转换为字符数组7 R4 P9 b$ O, v3 M! }5 ~
>>char(c)
- g2 p0 ^( i: i/ X( Ians =9 k% g' `7 f! X3 t- M" _
abc. N( F. N0 N! F
defg
8 r/ J& {' b* o) Z2 I. a0 yhi/ L) T/ z% X- H2 {8 f4 H

4 k9 g# X1 s, [8 ?( R& a8 x>> whos ans
; M+ V0 V2 a  K$ u, w# @- HName Size Bytes Class Attributes
. _: `& B5 Z" S& O. s+ Lans  3x4  24    cha


8 Z, c' O# W4 b# u5 K

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-7-22 22:42 , Processed in 0.109375 second(s), 23 queries , Gzip On.

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

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

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