フィルターのクリア

Is it possible to do multi index command in one line?

29 ビュー (過去 30 日間)
yoohooo's
yoohooo's 2021 年 4 月 28 日
コメント済み: Steven Lord 2021 年 4 月 28 日
For example, if I want to get number of columns in an array I would have to do the following:
A = [1 2; 3 4];
mySize = size(A);
myCol = mySize(2);
It adds 2 lines and an extra variable in my code. Is it possible to put them in one line like:
myCol = size(A)(2);
Somthing similar to this because this is not the correct syntax.
Thank you very much!

採用された回答

Matt J
Matt J 2021 年 4 月 28 日
編集済み: Matt J 2021 年 4 月 28 日
Not in general, but in the case of your example there is a shorter syntax,
myCol=size(A,2)
  2 件のコメント
yoohooo's
yoohooo's 2021 年 4 月 28 日
Thank you very much. Ah, I forgot we can also do it this way. This is not a good example, then. But yea, so it's not possible.
Steven Lord
Steven Lord 2021 年 4 月 28 日
For some definition of "one line" it is. Write a function:
A = [1 2 3; 4 5 6];
sz = size(A) % for checking
sz = 1×2
2 3
y = getElement(size(A), 2) % The one line
y = 3
But this has a drawback that the shorter syntax doesn't.
size(A, 3) % A has trailing singleton dimensions
ans = 1
y2 = getElement(size(A), 3)
Index exceeds the number of array elements (2).

Error in solution>getElement (line 7)
y = x(whichone);
function y = getElement(x, whichone)
y = x(whichone);
end

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

その他の回答 (2 件)

Matt J
Matt J 2021 年 4 月 28 日
An approximation of this can be enabled through some incredibly convoluted OOP methods
It's not worth it...

Matt J
Matt J 2021 年 4 月 28 日
編集済み: Matt J 2021 年 4 月 28 日
This is a generally applicable one line implementation, but probably not what you'd hoped for.
A = [1 2; 3 4];
myCol = subsref( size(A), struct('type','()','subs',{{2}}))
myCol = 2

カテゴリ

Help Center および File ExchangeMatrix Indexing についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by