找回密码
 注册
关于网站域名变更的通知
查看: 393|回复: 1
打印 上一主题 下一主题

Matlab里的cell和char&字符串与字符数组

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-3-20 09:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
$ k. l' [6 k$ ^/ P+ o* E
用importdata和textscan读取内容为字符串的txt,结果为cell型元胞组。6 s( C; N0 W9 c2 _5 q
% L! ?: A. k  J4 z) j0 P1 _
我想把cell变成char型,然后就自然地想到cell2str,遗憾的是matlab中没有这个函数。9 r% R5 m, X* C9 O

- n  _+ T" `6 k1 z* f就像没有str2cell一样。' e" v9 J( s  |$ f4 ^7 w3 {
( W, a' _) E8 ?8 K- n
实现str2cell功能的函数是cellstr,将字符数组转换为cell型字符串数组8 Y9 i9 j& J" ~$ W, g

6 ~' i3 W& w! `+ C- n; I函数语法为c = cellstr(S)
$ {3 l3 l/ D2 G) H: b( ?; s( z3 B9 _( D
它的作用是:将字符数组S中的每行分割成为cell细胞元组C的一个元素。并删除S的每行尾部空格
3 G6 [" J1 I* K1 E8 d0 \% N+ l# w/ l/ k
正好与char相反,char是将cell字符串数组转化为字符数组s=char(c)9 }& x/ k& Y' e1 j0 L
) f' [" L- ?, [: \% I

7 |- l+ s9 X$ K/ P1 t) I  B6 u% R( T! }: ?; d/ h

8 ]8 V1 }3 u  W; y0 Z# d. o+ l/ l" ?2 H% @2 ]6 T; y
很多人分不开字符数组和字符串什么区别。
6 y0 P. ]0 U+ ^% Z/ E8 y>>str1='i love matlab' % 这是一个字符数组,也是一个字符串' |& `- s( o  C# k* U6 |
str1 =6 [) l, J' L9 F, g6 |% D
i love matlab
3 ~$ i" P( G8 j2 U
$ F* P+ V, b* F/ ?% Q1 k>>str2=['I ';'am ';'a ';'boy'];% 这是字符数组,由于是数组,所以每一行必须具有相同的列数(字符数相同),不够补空格
' G. s$ p5 r; h7 Z9 j% |0 ]str2 =- |0 L5 |5 T: b8 \$ S; I
I
. s  O, g  I! Yam6 H' L# {" P, D1 p; }6 M' ^* t
a! s0 u- y, i6 \+ J! B
boy
3 f8 z& @* J/ c! S2 R, m( s* V7 h% o( z6 C# h
由于字符数组必须满足每一行具有相同的字符数,所以输入时很麻烦。通常情况我们使用char函数来完成自动补充空格或者创建字符串cell细胞元组。
( X- W# Y1 d4 u* x>>char('i','love','matlab') % char函数会自动补充空格
4 d% K8 f* r8 tans =, C6 o$ D5 @4 j" J7 [$ O5 ^3 S
i( r9 L! P& p9 x! e5 o, X3 F- f
love
+ m6 d* _% b* d7 h- C' Mmatlab
/ p" K* z- e4 H7 V( `8 F+ Z" z6 q
$ h, R, W6 c' _0 s) z>>{'i','love','matlab'} % 在cell字符串中,每个单元都可以完全不同的内容,所以,不需要补充空格。
7 B" e, k0 I* K3 Cans =# E/ X6 v9 C$ ~+ h% a8 j
'i' 'love' 'matlab'% k' g, V) @2 q: ?
; h# d4 e- {* M' {  G
# J0 w+ ?1 G0 q5 ?/ D$ M$ Y; K
( S! W4 ^3 B. l% D  N+ ~% `
% p, D  V: W0 B% ?! F9 R9 r' B8 r$ r
下面来看几个例子:
' _8 W' x  M- X* I4 D4 e/ M- ~
" p' @% K. U  l* _3 Z  r/ Q例1:创建一个字符串数组,记住补空格
8 c! z; \: c( n" N6 u! L9 k5 I>>S= ['abc '; 'defg'; 'hi  '] (下划线代表空格)
& r# r# k0 h2 y6 R+ }6 }- s+ JS =. w( f% a% w, p1 z
abc  o5 C! s) y  h: U( U
defg6 O+ `2 T/ M3 n" {! m3 [- s
hi* S% E% Z0 t! [. ^6 C& K0 i
5 I+ Z' w4 g8 I- I, J
>>whos S' c6 D1 l& o) z, ~. i, ^
Name Size Bytes Class
0 |' y/ [) P% |S    3x4  24    char array
2 O7 S5 X/ O4 j% ~& r- K; y  {/ }0 a4 ?- J. F5 M
例2:下面使用cellstr将字符数组,转换为3*1的cell细胞元组,此时尾部空格会自动删除 :
' x5 J4 {% C4 R' L7 ~6 M" f>>c = cellstr(S)
. V6 Z7 {: G% Y7 S; y5 C1 Mc =
4 s1 X( e/ }1 @  j'abc'* a5 J  u- o! g
'defg'4 U3 O2 t" h$ M% W) b4 o
'hi'
% L; P: w. G' N9 }# s" x! y; C( y, ?& N
>>whos c& Q- z# g$ {- i( j
Name Size Bytes Class
  L7 J( b+ {" t* {8 v8 ?4 bc    3x1  294   cell array3 e  [% D+ ^2 P5 {/ x) F& \
- I6 f+ f& J! g0 Q# u! m
例3:再使用char函数将cell字符串转换为字符数组
, i4 s. t) B3 I>>char(c)
' m3 u: V9 H& f' P& y: L0 Tans =% i) M- M2 Y" `+ F: J
abc
4 t* ~8 W5 o4 h+ T; F+ W9 edefg1 w6 o) E! `1 G2 ]/ w% u1 {& x# a! D
hi
) ]' d3 n- k' S6 z+ o+ L1 h
: N% f9 b2 c: m( Q# n4 H( O>> whos ans. s5 f! b& H4 O) j8 Y( y  o/ V( |6 B
Name Size Bytes Class Attributes6 G% K, ?$ p9 f+ }: f, u5 `4 H* R5 X
ans  3x4  24    char
  • TA的每日心情

    2019-11-29 15:37
  • 签到天数: 1 天

    [LV.1]初来乍到

    2#
    发表于 2020-3-20 18:09 | 只看该作者
    Matlab里的cell和char&字符串与字符数组
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

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

    EDA365公众号

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

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

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

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

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