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

很多人分不开字符数组和字符串什么区别。1 r: W& }- c" a) S0 @% [: m
>>str1='i love matlab' % 这是一个字符数组,也是一个字符串
7 f( ^. b& |4 i/ Y2 estr1 =
* o% Y; C* s( m! x5 Y7 `i love matlab
2 @$ K+ y) p* G+ D* S5 o: v' _* Y
>>str2=['I ';'am ';'a ';'boy'];% 这是字符数组,由于是数组,所以每一行必须具有相同的列数(字符数相同),不够补空格
' o+ |$ G+ q5 K6 p2 Wstr2 =( v; s/ m& J2 [3 N7 R5 k; r
I
/ x. w- [4 m4 h7 ]; yam
% C0 k$ o9 g/ g' _  r0 da
+ j$ |! ?/ _$ j/ Sboy
$ A4 y& {8 A6 |! i4 G3 L: s8 E$ t' W  X2 G1 l& |& F; ~
由于字符数组必须满足每一行具有相同的字符数,所以输入时很麻烦。通常情况我们使用char函数来完成自动补充空格或者创建字符串cell细胞元组。" V& t; w3 P9 j2 v! Q# @
>>char('i','love','matlab') % char函数会自动补充空格
. }$ W" z- w$ S+ L0 b) ~ans =
3 C0 X0 i3 v3 @6 ]3 f/ G; Bi; x' b$ w0 E8 N4 T: |5 A8 l3 [) a+ t
love% e% V5 L- H) y% s9 e
matlab" r7 }# @" {% d

+ n. M* E9 X/ g+ }3 y>>{'i','love','matlab'} % 在cell字符串中,每个单元都可以完全不同的内容,所以,不需要补充空格。$ P8 E" u+ b  A" H- ]6 f- A
ans =
4 ?6 Z% }  m7 Y'i' 'love' 'matlab'


0 ?. H4 o/ V+ x1 e下面来看几个例子:

例1:创建一个字符串数组,记住补空格
( z5 ^' o& {. [/ x( d" o& Z2 s>>S= ['abc '; 'defg'; 'hi  '] (下划线代表空格)
4 ~" f  N/ x6 q, x: tS =! N* }$ w( S3 j/ v' t/ f9 M
abc
+ Y$ b2 F% _3 w. idefg
; Y0 X8 n+ Y# R. A* ihi
5 G0 B3 g& U2 }
) e% J" V& u1 c! n; w>>whos S
4 [* G7 w' z( NName Size Bytes Class$ ~6 p( \$ i% _9 h
S    3x4  24    char array4 M3 Q  l& _# D1 N' r
6 f7 u  E& Y' _2 Q9 ^
例2:下面使用cellstr将字符数组,转换为3*1的cell细胞元组,此时尾部空格会自动删除 :% O# [, ]2 \& U
>>c = cellstr(S)
9 Q4 a, N- c. u9 i' S& {c =
; V9 F3 F+ n' S6 ^* H) X& u'abc'; J  Z3 \/ e% \% p2 L! {
'defg'
/ u& }  c4 U3 Q: P'hi'
4 T) G0 p1 Y! u% ^
+ t) k0 F6 S. |>>whos c
% B. p- M: J5 J% z7 V0 D2 ]* R5 lName Size Bytes Class
6 @! f9 W5 k# ^, }: Ic    3x1  294   cell array' k( e1 W9 t/ x/ @$ o

# y5 u( Z$ t* M4 M+ W. U5 R例3:再使用char函数将cell字符串转换为字符数组2 \- m, b$ Y/ D& m' X8 ~) v
>>char(c)
/ N. X* Y& P9 P* _( i0 X1 l- Fans =
- E9 J7 t$ ?1 ^# b) {& [abc% g7 E  o# P2 i0 u
defg5 j# R' u* @3 J  I/ N
hi
& L5 b% `, o- Q! s7 M! ?) k, ~/ ^4 Q$ ]! I& K- q; o5 Z
>> whos ans& V4 @) p" g7 A! [: \9 ?4 P. `9 R3 L
Name Size Bytes Class Attributes
0 c+ {3 s$ k* ^4 `ans  3x4  24    cha


1 ^* F% ]/ U, M, j. `- r

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-11-24 13:03 , Processed in 0.140625 second(s), 23 queries , Gzip On.

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

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

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