声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1637|回复: 0

[编程技巧] [转载]matlab里cell和char,字符串与字符数组

[复制链接]
发表于 2016-4-8 09:59 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

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)
很多人分不开字符数组和字符串什么区别。
>>str1='i love matlab' % 这是一个字符数组,也是一个字符串
str1 =
i love matlab
>>str2=['I ';'am ';'a ';'boy'];% 这是字符数组,由于是数组,所以每一行必须具有相同的列数(字符数相同),不够补空格
str2 =
I
am
a
boy
由于字符数组必须满足每一行具有相同的字符数,所以输入时很麻烦。通常情况我们使用char函数来完成自动补充空格或者创建字符串cell细胞元组。
  1. <p>>>char('i','love','matlab') % char函数会自动补充空格</p>
  2. <p>ans =</p>
  3. <p>i</p>
  4. <p>love</p>
  5. <p>matlab</p>
  6. <p>>>{'i','love','matlab'} % 在cell字符串中,每个单元都可以完全不同的内容,所以,不需要补充空格。</p>
  7. <p>ans =</p>
  8. <p>'i' 'love' 'matlab'</p>
复制代码

下面来看几个例子:
例1:创建一个字符串数组,记住补空格
>>S= ['abc '; 'defg'; 'hi '] (下划线代表空格)
S =
abc
defg
hi
>>whos S
Name Size Bytes Class
S 3x4 24 char array
例2:下面使用cellstr将字符数组,转换为3*1的cell细胞元组,此时尾部空格会自动删除 :
  1. <p>>>c = cellstr(S)</p>
  2. <p>c =</p>
  3. <p>'abc'</p>
  4. <p>'defg'</p>
  5. <p>'hi'</p>
  6. <p>>>whos c</p>
  7. <p>Name Size Bytes Class</p>
  8. <p>c 3x1 294 cell array</p>
  9. <p>例3:再使用char函数将cell字符串转换为字符数组</p>
  10. <p>>>char(c)</p>
  11. <p>ans =</p>
  12. <p>abc</p>
  13. <p>defg</p>
  14. <p>hi</p>
  15. <p>>> whos ans</p>
  16. <p>Name Size Bytes Class Attributes</p>
  17. <p>ans 3x4 24 char</p>
复制代码
转自:http://blog.sina.com.cn/s/blog_708637950101lc08.html

回复
分享到:

使用道具 举报

您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-5-18 09:29 , Processed in 0.158847 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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