在代码中使用字符串或字符数组?

14日视图(30天)
约翰内斯Hougaard
约翰内斯Hougaard 2020年6月8日
我写几个函数和脚本文件和内容从文件上执行操作。
我经常使用 sprintf , uigetfile 或其他基于字符/字符串的基本功能(甚至一个简单的 isa 就是一个例子),需要一个输入一个字符串或一个字符(有时甚至cellstr是一个好方法)。
年前,当我在做类似的东西在以前的MATLAB释放一切都处理 字符 数组(在需要的时候帮助一下细胞)。
现在看来城里有了一个新类,即 字符串 数组中。
这是喜欢的,为什么?我可以告诉 字符 在内存使用量相当优越,但还有其他优势用在另一个吗?

接受的答案

Stephen23
Stephen23 2020年6月8日
编辑:Stephen23 2020年6月8日
“这是首选,为什么?”
在我看来字符数组和字符串数组有不同的应用程序,尽管人们常常似乎对待他们是可互换的。总而言之,我将决定使用哪一个基于这些范例:
  • 字符串数组:使用时要考虑每个字符串元素作为一个原子单元(当然可以深入挖掘单个字符的字符串和混乱,但这并不是他们的存在的理由)。例如,字符串允许数组具有相同尺寸的相应数值数组(如简单的分配函数的输出循环)。各种特殊方法(如。组成等)有时很方便但不是特别有效。
  • 字符数组:使用当你需要使用单个字符,如压缩、编码/解码,或者当你需要写非常高效的代码。用字符数组可以使用标准的MATLAB索引和算术运算等处理单个字符编码。没有办法打这方面的速度或内存。
1评论
约翰内斯Hougaard
约翰内斯Hougaard 2020年6月8日
谢谢斯蒂芬。
这个很多意义——尽管仍然使字符串的类似于cellarray字符。
但这解释了一个混合使用的两个,给我一些指导何时使用字符串数组,同时仍然保持字符符号参数/值对,输入参数等。
文件名用于识别每个集群的变量是一个字符串,而更多的是一种“线宽”等角色的事。只是一点,生活把我难住了编辑和appdesigner显然鼓励使用字符串为我所做的一切。

登录置评。

答案(1)

dpb
dpb 2020年6月8日
这都是为了更方便的为目的…char()是最记忆效率,但人总是拖,记得使用二维数组索引的落后于结肠检索完整的字符串数组,甚至一个字符串中。的警告,当然,char()数组必须垫最长的单一元素,所以如果有很多只有一个长一个短字符串,可以为特定的应用程序也不会如此。这引出了一个额外的需要吗 strtrim 他们在使用。,后者带来了类似功能的扩散和名字过载,他们补充道 与字符串类,还扩展 strtrim 处理新字符串。希望他们不要那样做!:(
不管怎样,继续,如果一个是使用字符的字符串操作,可能更方便使用char()数组或cellstr ();用绳子一仍使用卷曲的“{}”后缀表示法来提取单个元素影响的底层字符()返回字符串嵌入式,不管怎样。
OTOH字符串支持一组新的操金宝app作,可以使一些更高层次的操作很简单——我特别找到了 extractAfter /前/之间 集团和 组成 派上用场,很快能够解析和构造运动。
我没有努力比较任何运行时性能;像往常一样我希望编写简单的代码只能担心,然后试图优化如果被证明是一个瓶颈,无法接受。

类别

找到更多的在字符和字符串帮助中心文件交换

标签

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!