【发布时间】:2014-11-26 15:34:23
【问题描述】:
我有一些可以将字符串元胞数组转换为字符元胞数组。
注意。由于多种原因,输入 (C) 和输出 (C_itemised) 都必须是元胞数组。
字符串元胞数组(C)如下:
>> C(1:10)
ans =
't1416933446'
''
't1416933446'
''
't1416933446'
''
't1416933446'
''
't1416933446'
''
我在这里只展示了数组的一部分。实际上,它的长度约为 28,000 行。
我有一些代码可以做到这一点,尽管它效率很低。 cellstr 函数占用了 72% 的代码时间,因为它目前被调用了数千次。代码如下:
C_itemised=cell(length(C),500);
for i=3:length(C)
temp=char(C{i});
for j=1:length(temp)
C(i-2,j)=cellstr(temp(j));
end
end
我感觉一些小的修改可以去掉内部循环,从而大大减少整体运行时间。我已经尝试了很多方法来做到这一点,但我想我一直对是否使用 {} 或 () 感到困惑,并且无法在网上找到任何可以帮助我的东西。任何人都可以找到使代码更高效的方法吗?
还请注意,此功能与其他功能结合使用,并且确实有效,尽管它的运行速度比理想情况下要慢。因此,我不想改变C_itemised的格式。
编辑: (示例)我当前函数的输出是:
C_itemised(1,1:12)
ans =
Columns 1 through 12
't' '1' '4' '1' '6' '9' '3' '3' '4' '4' '6' []
【问题讨论】:
-
所以你有一个字符串元胞数组。您的目标是获取每个字符串,并将其转换为字符元胞数组,其中该元胞数组中的每个元素都是一个单独的字符吗?
-
是的,每一行都包含原始数组中同一行的各个字符
标签: arrays matlab performance cell-array