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) 很多人分不开字符数组和字符串什么区别。
2 ^# d% m9 U" E4 p/ F7 |>>str1='i love matlab' % 这是一个字符数组,也是一个字符串
' f9 Q. M" |) ystr1 =: a$ T, O k! P. R
i love matlab/ O6 A, X6 d2 Z' G* ^* O
( A U7 f; I. \% |( K- ~9 m7 H
>>str2=['I ';'am ';'a ';'boy'];% 这是字符数组,由于是数组,所以每一行必须具有相同的列数(字符数相同),不够补空格
( `% w% I+ B' H9 T5 A/ @str2 =. y: H4 D0 a# W' L0 Y% E
I
+ v; {% t+ O: g0 u3 d1 ~, a: Tam
7 k& g. W" Y; F8 Aa" j3 o' f" ~, ^9 a
boy2 w0 p1 m3 o7 @% P$ g
2 \8 b8 u3 p0 y6 R由于字符数组必须满足每一行具有相同的字符数,所以输入时很麻烦。通常情况我们使用char函数来完成自动补充空格或者创建字符串cell细胞元组。 J) C* t' }6 X) |
>>char('i','love','matlab') % char函数会自动补充空格
u3 Y o- u+ ~% |ans =' y! M* c1 s5 c2 U
i5 v9 c8 n6 Z1 Q$ J/ L9 a- h
love
' n$ h i! b# N6 m$ |5 z/ \matlab
* V% X6 G x# u' H/ A. m* n6 P
4 G: N/ x$ q" u* u2 A>>{'i','love','matlab'} % 在cell字符串中,每个单元都可以完全不同的内容,所以,不需要补充空格。
2 V7 L1 W Z9 C8 B1 M% qans =
) M+ |5 M6 }$ @# a5 J'i' 'love' 'matlab' ( |! H: z: Z* n, ^2 s z! ^) E
下面来看几个例子: 例1:创建一个字符串数组,记住补空格' }; @7 ?6 u/ }8 H+ L
>>S= ['abc '; 'defg'; 'hi '] (下划线代表空格)7 s1 p- r' P2 ~6 ~' t
S =
+ A' K W3 B9 S8 \; F+ Zabc
* u c# K5 O Qdefg
( n5 c- t6 }% v; }4 n7 V' Rhi
e% z) a0 z/ `% U0 T4 W$ |1 q; k" \# c5 w
>>whos S
( l5 G* `1 [3 z: C iName Size Bytes Class
: c5 x b' L4 O) e& R+ a' RS 3x4 24 char array, Y. Y; Y+ J# e, s1 p( z
. C0 V! S5 C: z. X7 r) P1 F4 `1 }例2:下面使用cellstr将字符数组,转换为3*1的cell细胞元组,此时尾部空格会自动删除 :% g' E( b4 K0 i! O: L+ M0 @+ {
>>c = cellstr(S)3 O I/ D% Z( C5 I3 k3 X
c =7 X* x- {. y6 p7 K+ E2 O5 I0 E- R" o
'abc'
- e. U3 w7 ]1 b4 z2 G'defg'
" B& g' f9 R9 A" ]* w'hi'3 \ w) N9 @3 i2 M' X
6 u" i3 Q9 W- |: x>>whos c( o! t8 Z/ t" g7 Z3 L
Name Size Bytes Class7 j7 r! P& x9 h
c 3x1 294 cell array" i) F- N( i1 d# M2 {% x+ P. T8 v
& {7 s; V7 z+ e! [) V6 q
例3:再使用char函数将cell字符串转换为字符数组
# S$ t# q$ ?+ q0 f>>char(c)) {$ ~6 \6 u2 L, e2 n& N
ans =
0 R: E# X9 v: \; N& U" t" wabc3 I8 }% N# Y3 D7 E
defg- V# L0 }3 |0 T3 d( b
hi+ r, h: D3 t; l9 @/ ^2 G
: ^* g7 Z% U8 k# l. L
>> whos ans# G& p" r6 ?, z9 f0 Q2 [; [1 z- J
Name Size Bytes Class Attributes
1 f! d* b# b- ?0 g; b' }$ Wans 3x4 24 cha
* P4 f% F; M7 Z |