找回密码
 注册
关于网站域名变更的通知
查看: 437|回复: 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 ^# d% m9 U" E4 p/ F7 |>>str1='i love matlab' % 这是一个字符数组,也是一个字符串
' f9 Q. M" |) ystr1 =: a$ T, O  k! P. R
i love matlab/ O6 A, X6 d2 Z' G* ^* O
( A  U7 f; I. \% |( K- ~9 m7 H
>>str2=['I ';'am ';'a ';'boy'];% 这是字符数组,由于是数组,所以每一行必须具有相同的列数(字符数相同),不够补空格
( `% w% I+ B' H9 T5 A/ @str2 =. y: H4 D0 a# W' L0 Y% E
I
+ v; {% t+ O: g0 u3 d1 ~, a: Tam
7 k& g. W" Y; F8 Aa" j3 o' f" ~, ^9 a
boy2 w0 p1 m3 o7 @% P$ g

2 \8 b8 u3 p0 y6 R由于字符数组必须满足每一行具有相同的字符数,所以输入时很麻烦。通常情况我们使用char函数来完成自动补充空格或者创建字符串cell细胞元组。  J) C* t' }6 X) |
>>char('i','love','matlab') % char函数会自动补充空格
  u3 Y  o- u+ ~% |ans =' y! M* c1 s5 c2 U
i5 v9 c8 n6 Z1 Q$ J/ L9 a- h
love
' n$ h  i! b# N6 m$ |5 z/ \matlab
* V% X6 G  x# u' H/ A. m* n6 P
4 G: N/ x$ q" u* u2 A>>{'i','love','matlab'} % 在cell字符串中,每个单元都可以完全不同的内容,所以,不需要补充空格。
2 V7 L1 W  Z9 C8 B1 M% qans =
) M+ |5 M6 }$ @# a5 J'i' 'love' 'matlab'

( |! H: z: Z* n, ^2 s  z! ^) E
下面来看几个例子:

例1:创建一个字符串数组,记住补空格' }; @7 ?6 u/ }8 H+ L
>>S= ['abc '; 'defg'; 'hi  '] (下划线代表空格)7 s1 p- r' P2 ~6 ~' t
S =
+ A' K  W3 B9 S8 \; F+ Zabc
* u  c# K5 O  Qdefg
( n5 c- t6 }% v; }4 n7 V' Rhi
  e% z) a0 z/ `% U0 T4 W$ |1 q; k" \# c5 w
>>whos S
( l5 G* `1 [3 z: C  iName Size Bytes Class
: c5 x  b' L4 O) e& R+ a' RS    3x4  24    char array, Y. Y; Y+ J# e, s1 p( z

. C0 V! S5 C: z. X7 r) P1 F4 `1 }例2:下面使用cellstr将字符数组,转换为3*1的cell细胞元组,此时尾部空格会自动删除 :% g' E( b4 K0 i! O: L+ M0 @+ {
>>c = cellstr(S)3 O  I/ D% Z( C5 I3 k3 X
c =7 X* x- {. y6 p7 K+ E2 O5 I0 E- R" o
'abc'
- e. U3 w7 ]1 b4 z2 G'defg'
" B& g' f9 R9 A" ]* w'hi'3 \  w) N9 @3 i2 M' X

6 u" i3 Q9 W- |: x>>whos c( o! t8 Z/ t" g7 Z3 L
Name Size Bytes Class7 j7 r! P& x9 h
c    3x1  294   cell array" i) F- N( i1 d# M2 {% x+ P. T8 v
& {7 s; V7 z+ e! [) V6 q
例3:再使用char函数将cell字符串转换为字符数组
# S$ t# q$ ?+ q0 f>>char(c)) {$ ~6 \6 u2 L, e2 n& N
ans =
0 R: E# X9 v: \; N& U" t" wabc3 I8 }% N# Y3 D7 E
defg- V# L0 }3 |0 T3 d( b
hi+ r, h: D3 t; l9 @/ ^2 G
: ^* g7 Z% U8 k# l. L
>> whos ans# G& p" r6 ?, z9 f0 Q2 [; [1 z- J
Name Size Bytes Class Attributes
1 f! d* b# b- ?0 g; b' }$ Wans  3x4  24    cha


* P4 f% F; M7 Z

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-11-24 10:45 , Processed in 0.171875 second(s), 24 queries , Gzip On.

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

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

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