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

很多人分不开字符数组和字符串什么区别。# `; ~2 G& g4 T. j6 q7 L
>>str1='i love matlab' % 这是一个字符数组,也是一个字符串
/ N$ G2 G' U2 \str1 =
# ~3 t, K- \. @8 }' q1 qi love matlab6 |  F& W. }" ~% A; E1 A
7 @# T8 X8 ?: q$ K
>>str2=['I ';'am ';'a ';'boy'];% 这是字符数组,由于是数组,所以每一行必须具有相同的列数(字符数相同),不够补空格" F; S' d2 y1 {( G$ G9 Q" G# n
str2 =
" J$ ~7 W8 A# |. `2 L5 _  ~4 hI
) R9 |* `  u3 q) Gam. L3 }+ E4 N# W2 S; g+ a7 ]
a, \, K' ]; r3 x# s3 b/ v  l: v% Z
boy
, |* {& w# g: K3 H5 O+ r+ I; s& Z$ q: {. G
由于字符数组必须满足每一行具有相同的字符数,所以输入时很麻烦。通常情况我们使用char函数来完成自动补充空格或者创建字符串cell细胞元组。
  H' W: o$ ?% v" ?' |>>char('i','love','matlab') % char函数会自动补充空格8 `% P+ T3 ^- F3 l
ans =' Z7 ]. ?$ ?7 x2 ~/ Z; t
i1 t, f9 V' q. x4 y7 _
love
! r* A) W/ f. p) T3 U1 [5 Jmatlab
0 N! t% c. Q+ A! I6 m3 ]. `7 T! `8 q7 R: P9 I7 b  X
>>{'i','love','matlab'} % 在cell字符串中,每个单元都可以完全不同的内容,所以,不需要补充空格。8 v) v: ]" q# L  s8 v, ~
ans =
6 b# j- X5 n4 M6 r' I+ q* i& @  l9 _'i' 'love' 'matlab'


/ [( ?3 f5 ?) A% `- v下面来看几个例子:

例1:创建一个字符串数组,记住补空格
  e, m& m6 j* s% V4 A4 T, `7 |5 u>>S= ['abc '; 'defg'; 'hi  '] (下划线代表空格)( J+ @5 Y2 J  |; }" |) g) ?2 H
S =
; z* b* w& Q& c6 M& e/ Z5 K) W$ ?abc
0 {+ }5 N0 C, P& F) R6 p3 ~defg0 t2 Q3 v; ~6 W, I) {% \% ]
hi
* x! e" d! i$ Q* R+ F  Y. a# P" W! Q6 V) v2 [( i% X& \) h! m
>>whos S, G0 o. d" ^; {% |8 B1 d
Name Size Bytes Class
5 v, b, I8 m+ _. F7 HS    3x4  24    char array
1 i. O% L  o- e6 s# q4 O" F* @  E+ Z( s/ U( k2 Q
例2:下面使用cellstr将字符数组,转换为3*1的cell细胞元组,此时尾部空格会自动删除 :  ?, A7 y, f. `! X% w2 u! T
>>c = cellstr(S)
. u: b( C* `- O1 l: w6 Zc =
+ V% N& v) ~( g'abc'( R+ r1 z% K7 Z' q5 ~" G
'defg'# Y# {' h$ [4 V6 X
'hi'
* [4 E4 V) a# r+ y* g, O8 y5 o) ~2 G: w% l0 O. ^: O( a6 R7 Z) y
>>whos c5 T  m$ k: R, V7 g6 f
Name Size Bytes Class
1 [4 g' M0 l4 a5 S: [+ D" A% yc    3x1  294   cell array9 V% d/ G. w2 W: L1 w5 M
" l+ n3 P4 m% _
例3:再使用char函数将cell字符串转换为字符数组
6 U( h# o# A, @* e. S>>char(c)7 ^0 \) C% X) d- `
ans =; z5 A. W) O( E& ^- ~* M3 b
abc0 w. r0 P( Z8 T$ k3 H5 }3 n, e4 Q
defg
- G  m. a: }" e0 r3 C5 X  x" ohi
; L7 Z( V+ r. F$ i4 y1 O' l) e' `+ `
>> whos ans# k: B1 u, M( v1 Y
Name Size Bytes Class Attributes, E! a, t/ z; O$ G0 k
ans  3x4  24    cha

; l+ j9 v4 S; P* a; C

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

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

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

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

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