我是 MATLAB 新手,我正在努力理解数组操作和元素操作之间的微妙之处。我正在处理一个大型数据集,我发现最简单的方法并不总是最快的。我有一个非常大的字符串元胞数组,就像在这个简化的例子中一样:
% A vertical array of same-length strings
CellArrayOfStrings = {'aaa123'; 'bbb123'; 'ccc123'; 'ddd123'};
我正在尝试提取一个子字符串数组,例如:
'a1'
'b1'
'c1'
'd1'
我对这样的元素参考感到很满意:
% Simple element-wise substring operation
MySubString = CellArrayOfStrings{2}(3:4); % Expected result is 'b1'
但我无法计算出一次性引用它们的符号,如下所示:
% Desired result is 'a1','b1','c1','d1'
MyArrayOfSubStrings = CellArrayOfStrings{:}(3:4); % Incorrect notation!
我知道 Matlab 能够执行非常快速的数组操作,例如 strcat,所以我希望有一种以类似速度工作的技术:
% An array-wise operation which works quickly
tic
speedTest = strcat(CellArrayOfStrings,'hello');
toc % About 2 seconds on my machine with >500K array elements
我尝试过的所有使用幕后迭代的 for 循环和函数在我的数据集上运行得太慢。是否有一些数组符号可以做到这一点?有人能纠正我对元素和数组操作的理解吗?!非常感谢!