# A Quickie: do I have to create a temp array in my code

1 view (last 30 days)
Scragmore on 28 Nov 2011
Hi,
Q? do I have to create the temp array 'abMt'. Can I rap 'TxTRIn{ii,2}(indx,2:5)' in max to get ans?
1 first I create an index of the section of the array I wish to find max
2 load required data into temp array
3 max(array(:)) returns absolute max for complete data set.
1 indx = (TxTRIn{ii,2}(:,1)>= 800) & (TxTRIn{ii,2}(:,1)<= 1500);
2 abMt = TxTRIn{ii,2}(indx,2:5);
3 abMax = max(abMt(:));
Thanks

David Young on 28 Nov 2011
It looks as if TxTRIn{ii,2}(indx,2:5) is 2D. If that's correct, you can write
abMax = max(max(TxTRIn{ii,2}(indx,2:5)));
to avoid the temporary array. However, the way you have it now is probably clearer to read, and I doubt that it is any less efficient.
##### 3 CommentsShow 1 older commentHide 1 older comment
Scragmore on 28 Nov 2011
FYI,
looks like I am sticking with the temp array. over 1000 cycles of my function the times came in 21sces for max(max()) and 17secs for max(temp_array(:))
Walter Roberson on 28 Nov 2011
And for max(reshape(...)) ?
There isn't much overhead for creating a temporary variable to store something that is already calculated. The overhead comes if you modify the temporary array. Using (:) to reshape to a column vector does not require modifying the temporary array, just creating a header with the dimensions changed but pointing to the same data block.

Walter Roberson on 28 Nov 2011
max(TxTRIn{ii,2}(indx,2:5)) is valid syntax, but it would give one maximum per column rather than an overall maximum.
It is not allowed use TxTRIn{ii,2}(indx,2:5)(:)
It is, though, allowed to use reshape(TxTRIn{ii,2}(indx,2:5),[],1)
Scragmore on 29 Nov 2011
FYI,
max(reshape(...)) came out consistently at 21secs.
max(temp_array(:)) it is then.

### Categories

Find more on Matrices and Arrays in Help Center and File Exchange

### Community Treasure Hunt

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

Start Hunting!