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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x

4 J3 z. Z! b, y用importdata和textscan读取内容为字符串的txt,结果为cell型元胞组。) ]" b8 P* S5 P8 f& c% F
6 @1 r( T. C8 @; }- E. W; B
我想把cell变成char型,然后就自然地想到cell2str,遗憾的是matlab中没有这个函数。* ?* L# L7 u4 b8 v2 l

& Q' }* L2 r% L' x" J5 T就像没有str2cell一样。
! C* }& W. p+ E/ j2 m# J; J& c% S: a. e0 D* f0 G
实现str2cell功能的函数是cellstr,将字符数组转换为cell型字符串数组
- q, n& y" j) o9 s/ C; v
! ]( T% T1 K1 t" e函数语法为c = cellstr(S)
8 t; P/ f% G1 M/ M6 c9 J% M4 v, V$ x- c" z8 k1 p' j5 J! V
它的作用是:将字符数组S中的每行分割成为cell细胞元组C的一个元素。并删除S的每行尾部空格$ x. X. g5 }- R, X9 i

- J( [; [3 e. G% X  A5 N正好与char相反,char是将cell字符串数组转化为字符数组s=char(c)
* Y& q' b" k4 ^) o
2 K5 U+ E3 v' C+ t7 \ 1 R% W. |7 J* w& s0 d) `7 h8 J% ]$ Q

+ M! p! \2 L9 D9 T! y% B! L" A % j2 S% j5 k! [! ~- W9 x+ @2 p) u

5 t) _" R, |6 `/ i7 B/ \! N很多人分不开字符数组和字符串什么区别。' ^3 v4 h; @0 [  o" b" A% c
>>str1='i love matlab' % 这是一个字符数组,也是一个字符串$ {( ^8 }6 T/ j2 e
str1 =7 \, o: C) v9 S; [  k+ T
i love matlab' ]. s$ }8 `, Q; E5 ]. c0 D
. S. L/ \4 m' \7 N  ?! P
>>str2=['I ';'am ';'a ';'boy'];% 这是字符数组,由于是数组,所以每一行必须具有相同的列数(字符数相同),不够补空格
9 k5 x  C. T! V. J. t, M0 {1 xstr2 =
/ \8 P3 [- E- B2 P3 t. ^5 EI
8 y* B* U3 ?& p5 z5 Vam2 [; F0 W- v; o
a
" D9 e* O1 K- E3 [boy( [6 w1 u# Q% R: V; N; x' {
$ l* s4 Q7 W6 @' B% D$ e4 E
由于字符数组必须满足每一行具有相同的字符数,所以输入时很麻烦。通常情况我们使用char函数来完成自动补充空格或者创建字符串cell细胞元组。
2 X" h* I6 [9 j, P$ U>>char('i','love','matlab') % char函数会自动补充空格
+ x; d# p7 Q! \ans =
5 |" ?- n" h2 L9 Di
+ k, f0 _, I4 @8 r; c7 |6 zlove
3 [. e( F! R9 a+ K( F. Ematlab! H- P7 R; O1 H

( ^  I; P& H# V) z: z; b/ G5 |>>{'i','love','matlab'} % 在cell字符串中,每个单元都可以完全不同的内容,所以,不需要补充空格。
  X5 n* Y" H' i) e4 Z0 ~ans =# B. W; i& f- {4 ]$ ~# |: W; n6 L5 i
'i' 'love' 'matlab'
$ `. |0 G6 P, A2 C) q+ R/ v) z7 g
3 N6 Q% Z" x  O6 s) l- p) r8 O : B/ R& G' X" d( G7 Z! |
8 V6 k& H. q9 z
" S& ?4 l6 n2 E/ A% `
下面来看几个例子:
) g% t. Y8 q, @8 C) p& @8 t
, Y1 r( m/ S  ~, G$ f. p* o+ s例1:创建一个字符串数组,记住补空格
. z2 L# X4 B! \/ l3 j" d* Q- v>>S= ['abc '; 'defg'; 'hi  '] (下划线代表空格)7 X* P  l# o3 R: f
S =
1 [: e+ I& \, y9 u! Qabc3 y; U7 E5 U" m
defg5 i9 H+ f4 K' e; C2 @
hi( F- k! a" A& A' O: g

! [: R! P( A# r- M: F8 z% c>>whos S
# z+ d& e# ^6 k8 ?1 gName Size Bytes Class' O1 m% _7 J) [$ k! G5 a! e7 K
S    3x4  24    char array" N! Z) N0 l( A
: n* n: ^  W. o# z' X2 P% L
例2:下面使用cellstr将字符数组,转换为3*1的cell细胞元组,此时尾部空格会自动删除 :! c4 W0 s; @- {+ |' k: y
>>c = cellstr(S)
7 x0 ?) {8 @* @' `4 Pc =- s# m6 n! o8 g* v4 B0 a$ `
'abc'
4 o, K) u4 t9 j4 c/ u" f/ O5 _1 i'defg'
) J; f! c6 L! i! z) |'hi'
7 O  L& t5 F( B1 R0 T1 F" F% Q1 h
>>whos c
/ i  x& ?" ?6 ]; @1 x' \Name Size Bytes Class
3 c& [7 Q2 y# {, j3 ^$ rc    3x1  294   cell array
9 k" o9 U1 o9 ?! R7 f: x; r8 l+ [# m  ~& |: B% `9 R2 O2 j
例3:再使用char函数将cell字符串转换为字符数组0 x0 ]+ f; P, [2 I5 x/ n
>>char(c)' }% Z' u; X; N6 e
ans =
$ S3 M# j: A1 @abc, x3 v0 `2 a/ a0 o& R; q
defg
0 k1 i$ K7 w5 ?! A( Hhi1 ]* o# k. p- E- E6 a: W2 r
$ B  \& W3 y; s' s/ g- \" e4 p2 w) |2 y
>> whos ans, }4 X7 ]- n# X2 e
Name Size Bytes Class Attributes) Z1 M5 F- V: G/ ~4 i7 j2 N' q& a
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-24 07:38 , Processed in 0.140625 second(s), 23 queries , Gzip On.

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

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

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