How can I dynamically assign/access elements in a matrix with arbitrary dimensions?

10 ビュー (過去 30 日間)
Erling Hugo Jensen
Erling Hugo Jensen 2013 年 1 月 15 日
編集済み: Walter Roberson 2016 年 6 月 24 日
I am creating a code to manipulate a matrix generated from an external file. I would like to make it so that the matrix could have arbitrary dimensions, e.g. in one file it might be just one dimension so listing all the elements could be done like:
A(:)
in another, it might have two dimensions, so listing the elements could be done like:
A(:,:)
if three,
A(:,:,:)
and so on. My problem is that I don’t know how (or maybe it is not possible) to make some general code to manipulate the matrix A. If I had know that A had dimension 3, I could just do something like
A(n,m,o)
But what I would like to do is something like
A(C)
where C is a list equal to [n m o] or [n m o … z].
Any ideas?
~Jensen~

回答 (1 件)

Jan
Jan 2013 年 1 月 15 日
編集済み: Jan 2014 年 7 月 15 日
Not matching the question exactly, but worth to mention:
A = rand(2,3,4) % Or: rand(2,3,4,5,4,3,2)
Index = cell(1, ndims(A));
Index(:) = {':'}; % BUGFIX: was {:}, thanks Walter and Jim
A(Index{:}) % Equivalent to: A(:, :, :)
Index{2} = 2:3;
A(Index{:});
  6 件のコメント
Matt
Matt 2014 年 7 月 10 日
Sharp! thanks
Chris
Chris 2016 年 6 月 24 日
You made my day! I 've been searching & trying for almost three hours...

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeCreating and Concatenating Matrices についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by