Indexing of fresh array in one line without intermediate variable.
이전 댓글 표시
How do I index a newly made array without intermediate variables?
Maybe not the best example, but imagine I want to do this
regexp(string,expression,'match')(10:20)
How do I do it in one line?
It is not a regexp question. This problem occurs in many different situations. Thank you
EDIT Another example
function ans = Func(array)
array
end
I want it to look like
Func(1:10)(2:3)
But I need to do
temporary = Func(1:10);
temporary(2:3)
EDIT2. Finally found the answer here: http://stackoverflow.com/questions/3627107/how-can-i-index-a-matlab-array-returned-by-a-function-without-first-assigning-it
댓글 수: 4
Azzi Abdelmalek
2013년 6월 6일
Give an example
Maxim
2013년 6월 6일
UniqueWorldline
2017년 11월 14일
For anyone finding this question as late as I have, but who is looking for a simple solution for the
size
function, do the following to only get the one index of the array size you are looking for:
A = [1,2,3,4,5]; % Some array
arrayCols = size(A); % This returns a 1x2 array with the number of rows
% and columns of A. Which is undesirable if only
% the columns are wanted. Instead do this:
[arrayRows,arrayCols] = size(A);
Now arrayCols is a scalar value that can be used immediately. This doesn't allow you to do
size(A)(2)
but it can still eliminate an intermediate.
"This returns a 1x2 array with the number of rows and columns of A."
No. Strictly speaking that actually returns the combined size of all dimensions >=2. Lets try it now:
A = rand(5,4,3);
[rows,notcolumns] = size(A)
If you really want the number of columns only then the simple and reliable approach is this:
size(A,2)
채택된 답변
추가 답변 (2개)
Azzi Abdelmalek
2013년 6월 6일
편집: Azzi Abdelmalek
2013년 6월 6일
DH
2023년 12월 28일
Hope this helps.
interp1(Func(1:10), 2:3)
카테고리
도움말 센터 및 File Exchange에서 Creating and Concatenating Matrices에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!