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
|