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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
4 R9 }. y. \6 e1 F3 `3 g
用importdata和textscan读取内容为字符串的txt,结果为cell型元胞组。' M: x2 Q1 ?& C+ q

9 p! q* K6 b+ P5 `2 g2 M' h0 d/ Q我想把cell变成char型,然后就自然地想到cell2str,遗憾的是matlab中没有这个函数。
' d1 o) Z, k3 T& x! D( R0 p- K5 P1 y; M$ ]# Z0 m
就像没有str2cell一样。& q/ l( i1 ^$ a- Q+ T) i

4 T! Y" m/ M& Y, U, M3 r实现str2cell功能的函数是cellstr,将字符数组转换为cell型字符串数组
% D$ u) U" t3 M: [
4 X, H% Q2 ^  p6 O函数语法为c = cellstr(S)
# U; H0 l$ [$ {8 G* C8 R: x$ G+ K) o$ }0 j% ^( ~) M) T
它的作用是:将字符数组S中的每行分割成为cell细胞元组C的一个元素。并删除S的每行尾部空格
' A8 m4 e3 @5 i: }6 v. d0 ~% a" b2 {0 b: W2 |7 ^9 T6 ^
正好与char相反,char是将cell字符串数组转化为字符数组s=char(c)
6 Y& _: |7 ~& v4 \5 b9 z9 y2 ~" _# t& n$ X8 P6 |
4 Q+ Y& _$ K3 t. @

! L. i' I6 X: u$ n3 V
% b2 }  x$ A4 v1 J
) [8 M. ~! C( A' a& g4 H0 x' g很多人分不开字符数组和字符串什么区别。# K/ r/ a9 L9 X/ `% c5 {" F& P
>>str1='i love matlab' % 这是一个字符数组,也是一个字符串
0 v% S5 q, h) l1 }; t. A8 `str1 =' r8 @. ?% C' c  L* B5 a" q
i love matlab
9 k* t8 c% f6 M" k9 f2 [3 G8 V' ^+ d; S
>>str2=['I ';'am ';'a ';'boy'];% 这是字符数组,由于是数组,所以每一行必须具有相同的列数(字符数相同),不够补空格
  N% n2 b4 G$ q* N; wstr2 =! w" \1 L# m8 l9 x" b( g% i; L# Z
I
# R5 D3 P* _8 Wam
+ l1 m. Y- X6 K" p7 f1 ba) w1 ?; e7 ?) V8 f5 [
boy. F8 c% ^8 L2 b" O% w$ e. x

' R0 A- v" Q) _% \由于字符数组必须满足每一行具有相同的字符数,所以输入时很麻烦。通常情况我们使用char函数来完成自动补充空格或者创建字符串cell细胞元组。
$ o+ }9 r) t7 v% d! V% c6 ~4 K" J- }>>char('i','love','matlab') % char函数会自动补充空格
: ~' r( H' v+ F2 xans =8 L8 K" ^" F" V5 R/ C
i
. ?1 t* I4 V% P6 ?& Blove
$ k5 O$ x! @! T+ p4 Wmatlab! W! X2 h9 `9 c. q* g

: i) h8 B% c! ~& S0 A>>{'i','love','matlab'} % 在cell字符串中,每个单元都可以完全不同的内容,所以,不需要补充空格。+ _8 \/ n7 Q! x
ans =
% X# [% d; D" r. D'i' 'love' 'matlab'
' c3 C' X2 N% n& k9 d
2 \1 l5 X, f$ @0 j0 X
, Z6 Q' c# l" ]9 j9 ^3 v
) B) E. m7 a6 u& k; B3 R8 U# e) H& e) M, w0 N  J
下面来看几个例子:: D- m. T) @1 n( [

. W5 a. k4 P* l例1:创建一个字符串数组,记住补空格& z4 _  ?: t& ~0 `
>>S= ['abc '; 'defg'; 'hi  '] (下划线代表空格)
; p; n$ r5 R3 m# F4 nS =
, d' x1 q( O4 R- w( zabc
" V/ ]& K* e' N5 P9 d4 O$ j! J9 adefg! D7 S8 i' f" h% h7 o3 |
hi9 {+ L- x9 R5 g  B5 P) i' y# z
2 X& g' }( \/ P2 w2 d3 o/ E- f" Y
>>whos S/ I, r  d# ]  K( p9 ]$ T% W
Name Size Bytes Class
% c& V2 B/ J; sS    3x4  24    char array/ v$ o- \, Z0 t4 f. |0 ^. R
# Y# }+ W  L9 f' l9 C+ j- r2 T) f* f
例2:下面使用cellstr将字符数组,转换为3*1的cell细胞元组,此时尾部空格会自动删除 :2 v7 `3 o# m; I6 X5 `6 Q0 m. w2 Y0 P
>>c = cellstr(S)
; s5 m; F$ L% @2 A/ pc =) {0 v# R5 ?8 e# `
'abc'4 C4 c$ o) Z, @* {
'defg'! L7 Q5 r' O& P) z- |  ]8 P
'hi'5 n9 t+ Y0 b7 W; I0 L/ L
( @: Y" N, F4 U7 Y3 ?2 |% S5 P4 Y
>>whos c' {2 Y" a. J& W
Name Size Bytes Class
- {/ {9 ]# [1 Q4 Q; u6 c+ p7 qc    3x1  294   cell array
( Z  f& X  [7 W. U7 \1 A& j7 j7 ?0 D6 C8 Z3 Q* ^
例3:再使用char函数将cell字符串转换为字符数组% a3 o# r- q# x
>>char(c)- K7 z2 g  d! Y* T; p$ L+ E
ans =% d% c/ G+ J5 Z3 G
abc5 s2 I6 @3 [8 V) x8 A5 N0 Y( `
defg; Y6 v, G  G) ^" M7 Q  ], F
hi
/ l5 J+ Q5 a& B. x0 d
" k% J  K4 n* Y# l  B1 y9 D1 g>> whos ans
# Z% {# g* M$ f" }: D, @1 \Name Size Bytes Class Attributes6 K8 t) N$ e+ r" i7 I: d
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-11-4 18:04 , Processed in 0.156250 second(s), 24 queries , Gzip On.

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

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

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