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

很多人分不开字符数组和字符串什么区别。, p* Q, @3 h$ f2 J, U  y1 e
>>str1='i love matlab' % 这是一个字符数组,也是一个字符串7 ~; g! d6 m/ V4 i9 a# ~5 M
str1 =
, v* k) V$ g; a: n+ ~. |% l% Di love matlab* u* B) g8 p0 c: G4 [
. u8 U+ b# |0 N& h! _
>>str2=['I ';'am ';'a ';'boy'];% 这是字符数组,由于是数组,所以每一行必须具有相同的列数(字符数相同),不够补空格
  `. Z% k7 H# k& t# H; z% `str2 =
: Z4 G9 C& r( e/ ^9 a/ ^I, X# x: F5 j0 M- I
am* {3 i1 S. W0 _
a2 R: f; m1 b$ l: j
boy
& J0 Z1 z  D5 o) r5 r- g2 H- m' x( t2 M
由于字符数组必须满足每一行具有相同的字符数,所以输入时很麻烦。通常情况我们使用char函数来完成自动补充空格或者创建字符串cell细胞元组。2 J6 C1 ?# i7 z/ H- L
>>char('i','love','matlab') % char函数会自动补充空格+ l% w. ~# i3 K& `5 s1 R+ R
ans =
$ H9 E9 [8 o; n6 K6 ri! r8 c/ L7 b/ M/ a" R6 @
love
8 I2 o3 l6 U$ z" I, x6 W8 Nmatlab
4 D0 L; C# R. _2 e; `" C; G
: D7 r, U) L" A# V* Y, T6 x( Z4 D" i>>{'i','love','matlab'} % 在cell字符串中,每个单元都可以完全不同的内容,所以,不需要补充空格。
2 q/ G" I. m7 v7 Tans =
" s+ o! S, T  I; l'i' 'love' 'matlab'


9 I: e) a* d! o, L8 s, h下面来看几个例子:

例1:创建一个字符串数组,记住补空格
5 x) U9 d+ M! c5 J& a6 H>>S= ['abc '; 'defg'; 'hi  '] (下划线代表空格)( U- H: |) S" R
S =1 w' Q( V6 T9 F3 C* a
abc
9 S3 L! ^$ `% D% K$ y( Sdefg
9 E  \: {5 G. R# J2 \0 j  J% Khi
8 |; }1 j- U4 q% \9 _* S1 l0 |5 p. \/ q# S# U3 z4 J, ^- A* B
>>whos S, Z3 B& h! }0 l' I
Name Size Bytes Class2 Z4 M2 V7 b$ v6 \* c
S    3x4  24    char array
+ ]. |- e4 H* n! Y, s8 @% I1 F+ E% w: A: }5 w& I' C
例2:下面使用cellstr将字符数组,转换为3*1的cell细胞元组,此时尾部空格会自动删除 :
; n& G' D3 [  ]6 ?>>c = cellstr(S)
/ v+ d; R. }  M! R0 S1 ?4 |c =
& s0 s$ u: R4 R6 ?( v- G% m'abc'! |6 g% \2 K- D: _
'defg'
4 O' F2 W- V- a7 p0 U7 b: _: H  O'hi'% C  ]# z* K1 J1 M+ G2 U

# W/ A/ j0 O6 q- f1 Q2 S1 Q; `>>whos c
. M! T; U8 q2 ZName Size Bytes Class
# W1 d- D' k1 I' X  z) p6 V1 mc    3x1  294   cell array0 m0 q+ W+ m7 l& ]( H

4 b  D# f+ l' |! b2 I. b例3:再使用char函数将cell字符串转换为字符数组
  f9 Z9 c' P! Y+ V5 \>>char(c)
1 A5 o- ]' m. F" g7 K: Ians =
3 H3 y2 U( _3 H, jabc- r- q8 E# {2 ^  E9 i7 ~; j
defg
3 n, W# a/ _' J3 ?8 nhi
) f; k; a* P# B) u3 D
% w# h6 o" m) q>> whos ans; `2 F7 i, ?; x% A( h) i  d6 L
Name Size Bytes Class Attributes
9 Y0 m7 N/ u& x. n* h4 jans  3x4  24    cha

) o) N5 s5 V6 H5 p

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-11-6 18:11 , Processed in 0.140625 second(s), 23 queries , Gzip On.

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

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

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