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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
# U! N2 A# X2 J/ g
用importdata和textscan读取内容为字符串的txt,结果为cell型元胞组。
. F) P6 E) |- P
( @  I  C9 d* d4 G' n我想把cell变成char型,然后就自然地想到cell2str,遗憾的是matlab中没有这个函数。
" ]& V9 r8 b, s
% O7 I& t; F: U8 p; M1 y就像没有str2cell一样。* l" |& d8 p" w( ~
4 d6 w5 q3 m7 _6 R
实现str2cell功能的函数是cellstr,将字符数组转换为cell型字符串数组
/ z/ d0 v; A  D3 @) o1 Z# t1 H% P9 n: J% b
函数语法为c = cellstr(S)" ~+ G% A- W6 p( X) J
& z7 \4 m- `# p$ x7 T5 u" P
它的作用是:将字符数组S中的每行分割成为cell细胞元组C的一个元素。并删除S的每行尾部空格$ x! y3 \8 R$ V& f0 o  J& b
  Q  D' Z* q$ F5 h, ^. O2 T
正好与char相反,char是将cell字符串数组转化为字符数组s=char(c)! z; g8 l$ S* i6 @

+ r/ V6 w6 B; i7 x. ^
1 ?1 S0 c5 Y8 I/ ]& W
1 U% N% [5 [2 p5 t
' M. Q$ o) O3 ^4 U: ]
2 }* Z5 G5 E5 c2 P0 `* R5 z7 m很多人分不开字符数组和字符串什么区别。
. k; ?& ]: D9 d" y$ D0 H>>str1='i love matlab' % 这是一个字符数组,也是一个字符串
2 a3 l. }7 w: g8 }7 Wstr1 =
, F# T, U% p9 ~; D% D6 oi love matlab
3 @) H- F3 h, i: p4 L) e# N$ x. E" P$ }6 O: L  y
>>str2=['I ';'am ';'a ';'boy'];% 这是字符数组,由于是数组,所以每一行必须具有相同的列数(字符数相同),不够补空格3 u; Y. d2 w' G% m  E. C  w
str2 =/ K' k" F/ t7 N) t3 `
I9 o/ a( N! P( B" {# k
am
: G/ n3 n, g6 r# A* z/ L* ]a7 u1 A+ a/ A( M! Z" t; E; R
boy' L" l* a& h. K3 O4 q4 ~
- R. B( Z  i0 ~# l4 g# w; d" G8 w
由于字符数组必须满足每一行具有相同的字符数,所以输入时很麻烦。通常情况我们使用char函数来完成自动补充空格或者创建字符串cell细胞元组。
  t' X2 l' D; _5 Y4 f>>char('i','love','matlab') % char函数会自动补充空格
& o8 t: }5 b3 s9 h% n" {; [ans =7 N8 }* B4 ]5 [& h: O7 \* t, L. u
i
6 C. W- q/ T1 R7 Blove4 U6 H1 \. @* g) ^
matlab- V  i( s/ ^: E: N" E+ @
. m  U0 T, q  H) |4 Y, A
>>{'i','love','matlab'} % 在cell字符串中,每个单元都可以完全不同的内容,所以,不需要补充空格。
  a2 T5 i# z4 Q, Z) oans =+ ~7 C4 Q. m# s! ~' O8 h
'i' 'love' 'matlab'
" w* W- n, Q  ?$ m  h5 K$ m  L, P  b! N5 j- [7 B7 b) u

- m8 ~- H& n3 m! |  W- f
* O1 D9 x/ ?( L5 ^3 ~; q0 u/ z1 }
* q( R" y. A3 g" S6 @3 H) }下面来看几个例子:- {" n3 z' L1 X

0 l  |# e" N* r例1:创建一个字符串数组,记住补空格
& }5 f& P! J& [; [* ^>>S= ['abc '; 'defg'; 'hi  '] (下划线代表空格)
" E& a; [& R) u" mS =
4 v' r9 E$ H+ T; V! @3 u9 qabc
' _- L) p: W# M1 G8 U4 Adefg
! d" M/ s' {3 ohi2 R# l* [8 `6 m' C5 G

. K( w6 m* @3 b& _0 V>>whos S
3 f1 h0 n* _# J* a" B& g# ?3 }3 NName Size Bytes Class% l2 `2 G" o# L; R; I
S    3x4  24    char array
$ |& u$ f& j5 K! y% Q) j& \% f
. j" A- N4 f/ s+ Y' y例2:下面使用cellstr将字符数组,转换为3*1的cell细胞元组,此时尾部空格会自动删除 :
* f, ~3 O2 i. b6 c6 @>>c = cellstr(S)
1 X  z! r- i. q6 uc =, w% S7 r5 s' i& F
'abc'
) v9 r- p7 i5 t' B, W5 H'defg'
! H4 e7 V4 Q+ U'hi'
( X1 L: z: T9 }# m& S% p: }! D( r) n' W) }+ i( `; L
>>whos c! ^  Z1 }! P& m% [
Name Size Bytes Class0 r+ p" z# j3 M% \7 Y0 f9 r
c    3x1  294   cell array
1 W8 n, m8 @( M9 u- B- A+ _
5 b) l' [% P) a* K$ R例3:再使用char函数将cell字符串转换为字符数组
% [# O3 N8 l  W2 n* s# S>>char(c)
/ J8 y2 h9 Z: }3 Z2 G  eans =& j: Y. K( q* D, r
abc5 L4 f$ p3 p3 J( y7 C3 ~2 h% b9 p
defg
- Y  N' t4 h- r) U1 A! h; Fhi
' w$ U( i. d+ D" e0 G: i, ?: [7 r2 x. X
>> whos ans
' [0 A; {/ C- ]Name Size Bytes Class Attributes- m  p( y. x9 S7 l6 c' n+ }, s+ @
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-8-11 19:18 , Processed in 0.109375 second(s), 23 queries , Gzip On.

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

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

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