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

很多人分不开字符数组和字符串什么区别。/ v# e2 a5 P9 t: O8 C$ |8 h
>>str1='i love matlab' % 这是一个字符数组,也是一个字符串
0 E) x* H# ~  Estr1 =
" s. q- p5 m* e& R% Ri love matlab1 [5 B4 t0 x, o& P

# T. q" z0 G: g; I>>str2=['I ';'am ';'a ';'boy'];% 这是字符数组,由于是数组,所以每一行必须具有相同的列数(字符数相同),不够补空格
8 _) e# e  h3 Y0 C0 u8 c& pstr2 =, E0 @- c! F+ _4 F
I: x* u% h0 d# y1 Q. L1 W
am
) G9 o2 `) G2 C- Wa
$ ]" {5 x5 t; K/ K+ s2 a" m0 ^boy/ [0 `2 A$ w+ D* z$ k) Y
5 x# L8 z$ |( `: b
由于字符数组必须满足每一行具有相同的字符数,所以输入时很麻烦。通常情况我们使用char函数来完成自动补充空格或者创建字符串cell细胞元组。! g4 i& H1 G. {" M9 c# M3 G
>>char('i','love','matlab') % char函数会自动补充空格
* u0 o( ^* R  hans =
  G& R/ C5 t  u/ c1 ]5 A) Ti: z0 l1 |, z4 X3 E' h6 H  O
love
' R% m9 V7 K. T- S# P8 fmatlab
- z! T3 [2 J! b3 i  _
5 b3 M. h3 S, O>>{'i','love','matlab'} % 在cell字符串中,每个单元都可以完全不同的内容,所以,不需要补充空格。
4 x8 y) t; m7 n# t% N( D: Z; p9 Wans =
; ^( J0 _8 Y) F2 |1 Y2 E( l: \* Z: `! j'i' 'love' 'matlab'


& X9 n1 h$ F/ ]2 ^# B下面来看几个例子:

例1:创建一个字符串数组,记住补空格2 d/ H7 l' n: ]$ p& ~& P# ~% h
>>S= ['abc '; 'defg'; 'hi  '] (下划线代表空格)
8 C! `& f, W& N- G4 PS =6 F; Z' c) u& k3 h" U1 y4 |* n
abc. B' x7 d$ D' C! w$ Z  p
defg
3 Z& c8 ?  L; G' C4 Bhi
) B" Z7 U/ o. ?
  B+ y$ d% [8 x, d. L>>whos S0 x4 q0 x6 u( S; f  A9 P6 D
Name Size Bytes Class
9 Q) V7 e# o5 GS    3x4  24    char array
# b: y3 c! O2 T1 F# F; c. W5 c- e9 ^. D" a3 A* {7 u; [4 e1 |5 V
例2:下面使用cellstr将字符数组,转换为3*1的cell细胞元组,此时尾部空格会自动删除 :
5 c4 E' k/ x% ~0 I6 L% R# E4 m>>c = cellstr(S)1 w6 Q1 Z# v7 U, F8 f2 I
c =
/ w# j7 n! V" y: [1 T'abc'
* o* N5 a/ [! u'defg'
; W: K* u, h2 I+ L0 s'hi'" Y2 S7 i2 u, k  B% V

1 O" R: Q& k- ^: D7 a. A, [, ~>>whos c6 }$ w3 n0 U  n: f) O6 E* r
Name Size Bytes Class. }& `& e- r6 ]6 W+ h
c    3x1  294   cell array6 I  _% L: P8 z' q

/ ^$ D$ M+ q+ Y例3:再使用char函数将cell字符串转换为字符数组
( o2 a6 {* `+ i  {* V) K>>char(c)
  n0 {) G% c/ A  O$ `  Pans =* @6 u6 f1 w7 ~) {
abc
9 E1 h0 ~! s. W* [! P. N% [defg
, t' d6 ?5 ~0 V7 ?hi
( N! _* p- p( n+ u
3 G, q  g# y  j' D9 \1 d1 ~>> whos ans
5 V3 y1 r. ]5 ~: g6 m0 g+ k+ N: J/ ]Name Size Bytes Class Attributes  z0 h. N9 g& l) ~- k6 M
ans  3x4  24    cha


% w7 r) [1 T& A0 p3 l/ Y% E# ]8 a

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

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

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

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

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