これを行う MATLAB の演算子はありません。ただし、インデックス (つまりbar
、例) がcell arrayに格納されている場合は、次のようにすることができます。
bar = {3,4,5}; %# Cell array instead of standard array
foo(bar{:}); %# Pass the contents of each cell as a separate argument
は、セル配列からコンマ区切りのリスト{:}
を作成します。これはおそらく、既存の演算子の 1 つ (こことここに示されている)をオーバーライドして、標準配列からコンマ区切りのリストを生成するか、または独自のクラスにインデックスを格納し、既存の演算子がそれに対してどのように動作するかを定義します (気弱な人にはどちらのオプションもありません!)。
任意の ND 配列にインデックスを付ける特定の例については、sub2ind
関数を使用して添字付きインデックスから線形インデックスを計算することもできます (詳細はこちらおよびこちら)。上記のソリューション。もう 1 つの方法は、線形インデックスを自分で計算することです。これは、セル配列への変換を回避し、行列/ベクトル演算のみを使用します。次に例を示します。
% Precompute these somewhere:
scale = cumprod(size(Q)).'; %'
scale = [1; scale(1:end-1)];
shift = [0 ones(1, ndims(Q)-1)];
% Then compute a linear index like this:
indices = [3 4 5];
linearIndex = (indices-shift)*scale;
Q(linearIndex) % Equivalent to Q(3,4,5)