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

很多人分不开字符数组和字符串什么区别。
8 m# U5 h( q+ p- ?/ K; v! t9 l" `# d>>str1='i love matlab' % 这是一个字符数组,也是一个字符串
) M' Z9 S$ {0 d1 b0 O/ K( f& Kstr1 =" ]8 X% P9 S# e4 T5 d
i love matlab1 W5 V" ?8 Z- X  w) X/ k( Y& q* k" j

8 m- w4 n) E% z) |7 N- Y' T( P2 N- [>>str2=['I ';'am ';'a ';'boy'];% 这是字符数组,由于是数组,所以每一行必须具有相同的列数(字符数相同),不够补空格. h$ A/ n7 O. N6 b: m4 r
str2 =
( K# K* @; s" q, U4 r% ~. HI% Z& R4 J6 n* H5 \- ^7 f9 L
am7 N0 E1 R& U# q5 ~: L
a" h. h) y: K$ q$ N) o& i
boy' n, i/ ~9 L+ X
/ [( i! c' m. O
由于字符数组必须满足每一行具有相同的字符数,所以输入时很麻烦。通常情况我们使用char函数来完成自动补充空格或者创建字符串cell细胞元组。2 v6 T0 n5 p: q" r
>>char('i','love','matlab') % char函数会自动补充空格! c' e" L1 N; l2 F9 m! L
ans =
  ?4 a7 a3 R6 Ai
. l. V* c* H$ m$ H* Elove$ x# q$ h( p1 \2 A2 O0 v
matlab# H2 l  V" }) l, X- ]' B, Q8 [

% x2 Y' R% @0 l9 R5 u! ]* Q0 s6 q>>{'i','love','matlab'} % 在cell字符串中,每个单元都可以完全不同的内容,所以,不需要补充空格。
& m2 c( L. H6 m/ X! J/ _" uans =
1 w: d5 n* z$ B) U'i' 'love' 'matlab'


$ i# T9 x) w/ y( C- d. c: L下面来看几个例子:

例1:创建一个字符串数组,记住补空格, h2 l7 n/ m. \! ^5 q5 P% \! p% D3 B
>>S= ['abc '; 'defg'; 'hi  '] (下划线代表空格)
) l- m6 b- D& g; n" Y1 A3 P8 ]S =% M1 Y* Z# D% `: ^
abc2 @6 e; C: J  d  {; A- w
defg7 ^7 m2 F8 e6 T$ E7 R* H/ ^" b
hi9 k( H9 `6 @: S$ b! }

" D2 J6 u& b( A7 k$ |, J% P>>whos S
; _! J- O1 K. F- ]" U8 l* C2 ~+ sName Size Bytes Class' [8 w) g" D, E7 ^
S    3x4  24    char array0 ]2 q5 `$ g5 z$ X/ l8 j. e
& h: E  D1 L: c8 I: P& H
例2:下面使用cellstr将字符数组,转换为3*1的cell细胞元组,此时尾部空格会自动删除 :
! u2 `& ~+ i9 h: a3 n2 [9 `>>c = cellstr(S)  O4 L% p2 k( X$ U/ V6 p& @5 ^
c =
& g; N) h& x9 B7 g  l% _! f'abc'
$ F6 O- o! n0 O  i& ]. N'defg'
" C4 ?3 A/ S' j6 T* [. F'hi'
/ {4 j) x3 N% j7 j3 K& [5 v) h+ R- R
>>whos c
. L# g* ~) B/ U3 c# GName Size Bytes Class* N$ a8 ^  |% _2 t: B+ w
c    3x1  294   cell array3 ?! H+ d4 L4 _: X3 L5 f

% ]4 A( V7 G+ X0 i例3:再使用char函数将cell字符串转换为字符数组# A! g) C4 I; o" ^' c* h; T
>>char(c), x# v9 ^9 r: A/ X4 R
ans =. v( \2 Z2 Y6 V2 F; J. F' l
abc4 ~; B- R. ?( [  |0 z# h& h
defg3 _: u$ l2 y4 w& E* Z: d) d5 w
hi
8 m: g3 g0 U$ P1 D. Z
6 i) x# G) Z" T8 S>> whos ans
2 U5 y% p0 p0 [* F, AName Size Bytes Class Attributes9 c8 |: p- ^) ^7 h- J
ans  3x4  24    cha

6 e: @2 ^0 E2 H" B  W% L; {" w- Y9 H

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-6-26 01:16 , Processed in 0.078125 second(s), 23 queries , Gzip On.

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

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

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