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) 很多人分不开字符数组和字符串什么区别。
7 W2 G+ ]! g7 t" _3 p>>str1='i love matlab' % 这是一个字符数组,也是一个字符串
$ o5 K9 F6 \! w+ |str1 = P' w c, ~* L
i love matlab
/ g1 d' @/ Y% W6 C2 [0 \2 }: }) q% C# N7 A- N
>>str2=['I ';'am ';'a ';'boy'];% 这是字符数组,由于是数组,所以每一行必须具有相同的列数(字符数相同),不够补空格7 U! |* w, I7 S5 ]2 T. a, j
str2 =# a# G9 E# {6 D2 c
I
- y$ D: C2 Z% g4 d6 T* R4 \am
% I: J# f- Q4 o% W# da
, c! Z) e k' `8 t" n; Dboy
0 z! ]+ G' M/ S5 ^
0 o( a5 {8 F$ b! H, C ?' ]' w由于字符数组必须满足每一行具有相同的字符数,所以输入时很麻烦。通常情况我们使用char函数来完成自动补充空格或者创建字符串cell细胞元组。* f+ n5 P% @% i; V0 ^! O9 u6 Y7 n
>>char('i','love','matlab') % char函数会自动补充空格! d; ^% s+ P7 q
ans =' ?+ g' G& e; A) S7 U: ~1 r* N7 O
i
" ~8 I: i+ K: }/ tlove
6 w2 K" l! z% ]matlab
0 S0 O, \9 g6 K: ~2 J
2 K/ N; {* B; o: K- H% R2 d>>{'i','love','matlab'} % 在cell字符串中,每个单元都可以完全不同的内容,所以,不需要补充空格。
% R. b+ ~; A/ z6 Q U+ k; Qans =' F& Y R6 \7 k; s
'i' 'love' 'matlab' 6 ^) y# q: C( \9 w. c
下面来看几个例子: 例1:创建一个字符串数组,记住补空格
; t& a) ]6 Q! O$ r! S$ \>>S= ['abc '; 'defg'; 'hi '] (下划线代表空格)6 _ d5 K" P7 u
S =8 T8 q6 E. ~0 y4 d
abc( }2 I- n# P" ]6 \+ Y5 d1 V
defg6 b% ^- I& ]0 ?4 Z$ C, O2 Y
hi
3 k1 }$ H- q( K3 I+ d+ A. q2 w6 I1 n: f& C$ p0 n9 x/ _6 S
>>whos S6 C6 [5 ~* j$ D' }* Q
Name Size Bytes Class( O0 p. q& A u
S 3x4 24 char array
# b& \' |$ o& P+ f- |& Y. f: }# Y
' `8 Z# H" D2 B. f1 Z例2:下面使用cellstr将字符数组,转换为3*1的cell细胞元组,此时尾部空格会自动删除 :0 k$ g& b4 b; Q* j+ P/ Q! R
>>c = cellstr(S)# n7 F- b* c! h6 {4 `2 r, [
c =) k8 r7 f( C$ @5 Y( _" Q# N) d
'abc'; X6 b4 s; w4 E: A
'defg'
* F2 @2 D: d0 l- p'hi'
3 d' j/ T* s) ^5 K6 |( @& |2 k6 |5 I+ Q' p
>>whos c
' O7 z! o8 V1 L! ^( V9 UName Size Bytes Class
& T% s" s0 h4 e, W; Kc 3x1 294 cell array
' i4 \6 V3 O" n$ j0 {6 w* j$ w x1 E& A3 C$ V" c, P8 ^# A9 R
例3:再使用char函数将cell字符串转换为字符数组1 ~. i( |% Z3 o) X3 y
>>char(c)7 r9 H+ G1 h7 P! l4 K
ans =
/ |, T& s5 U7 ?abc
7 L- v* d2 @' f( r1 V. Z8 Y3 ~defg4 p3 f- O; E# `4 t d
hi
1 g' q" _9 ]. W+ C; g% f9 I- H- V) P
>> whos ans3 V- w. n) p9 f& K
Name Size Bytes Class Attributes
$ M5 C) z* n ]2 e7 a# Uans 3x4 24 cha " n) B. H( N3 N7 L) f& `/ D
|