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) 很多人分不开字符数组和字符串什么区别。, p* Q, @3 h$ f2 J, U y1 e
>>str1='i love matlab' % 这是一个字符数组,也是一个字符串7 ~; g! d6 m/ V4 i9 a# ~5 M
str1 =
, v* k) V$ g; a: n+ ~. |% l% Di love matlab* u* B) g8 p0 c: G4 [
. u8 U+ b# |0 N& h! _
>>str2=['I ';'am ';'a ';'boy'];% 这是字符数组,由于是数组,所以每一行必须具有相同的列数(字符数相同),不够补空格
`. Z% k7 H# k& t# H; z% `str2 =
: Z4 G9 C& r( e/ ^9 a/ ^I, X# x: F5 j0 M- I
am* {3 i1 S. W0 _
a2 R: f; m1 b$ l: j
boy
& J0 Z1 z D5 o) r5 r- g2 H- m' x( t2 M
由于字符数组必须满足每一行具有相同的字符数,所以输入时很麻烦。通常情况我们使用char函数来完成自动补充空格或者创建字符串cell细胞元组。2 J6 C1 ?# i7 z/ H- L
>>char('i','love','matlab') % char函数会自动补充空格+ l% w. ~# i3 K& `5 s1 R+ R
ans =
$ H9 E9 [8 o; n6 K6 ri! r8 c/ L7 b/ M/ a" R6 @
love
8 I2 o3 l6 U$ z" I, x6 W8 Nmatlab
4 D0 L; C# R. _2 e; `" C; G
: D7 r, U) L" A# V* Y, T6 x( Z4 D" i>>{'i','love','matlab'} % 在cell字符串中,每个单元都可以完全不同的内容,所以,不需要补充空格。
2 q/ G" I. m7 v7 Tans =
" s+ o! S, T I; l'i' 'love' 'matlab'
9 I: e) a* d! o, L8 s, h下面来看几个例子:
例1:创建一个字符串数组,记住补空格
5 x) U9 d+ M! c5 J& a6 H>>S= ['abc '; 'defg'; 'hi '] (下划线代表空格)( U- H: |) S" R
S =1 w' Q( V6 T9 F3 C* a
abc
9 S3 L! ^$ `% D% K$ y( Sdefg
9 E \: {5 G. R# J2 \0 j J% Khi
8 |; }1 j- U4 q% \9 _* S1 l0 |5 p. \/ q# S# U3 z4 J, ^- A* B
>>whos S, Z3 B& h! }0 l' I
Name Size Bytes Class2 Z4 M2 V7 b$ v6 \* c
S 3x4 24 char array
+ ]. |- e4 H* n! Y, s8 @% I1 F+ E% w: A: }5 w& I' C
例2:下面使用cellstr将字符数组,转换为3*1的cell细胞元组,此时尾部空格会自动删除 :
; n& G' D3 [ ]6 ?>>c = cellstr(S)
/ v+ d; R. } M! R0 S1 ?4 |c =
& s0 s$ u: R4 R6 ?( v- G% m'abc'! |6 g% \2 K- D: _
'defg'
4 O' F2 W- V- a7 p0 U7 b: _: H O'hi'% C ]# z* K1 J1 M+ G2 U
# W/ A/ j0 O6 q- f1 Q2 S1 Q; `>>whos c
. M! T; U8 q2 ZName Size Bytes Class
# W1 d- D' k1 I' X z) p6 V1 mc 3x1 294 cell array0 m0 q+ W+ m7 l& ]( H
4 b D# f+ l' |! b2 I. b例3:再使用char函数将cell字符串转换为字符数组
f9 Z9 c' P! Y+ V5 \>>char(c)
1 A5 o- ]' m. F" g7 K: Ians =
3 H3 y2 U( _3 H, jabc- r- q8 E# {2 ^ E9 i7 ~; j
defg
3 n, W# a/ _' J3 ?8 nhi
) f; k; a* P# B) u3 D
% w# h6 o" m) q>> whos ans; `2 F7 i, ?; x% A( h) i d6 L
Name Size Bytes Class Attributes
9 Y0 m7 N/ u& x. n* h4 jans 3x4 24 cha ) o) N5 s5 V6 H5 p
|