私は 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 ループと関数は、私のデータセットで実行するのが遅すぎます。これを行う配列単位の表記法はありますか? 誰かが要素ごとの操作と配列ごとの操作についての私の理解を修正できますか?! どうもありがとう!