Find the first element in an array
8 views (last 30 days)
Show older comments
Commented: Voss on 16 Jul 2022
Hey guys, thanks in advance.
I want to find the first element and the last element, besides Nan in the matrix attached how can I do that?
This just gives me Nan
Voss on 16 Jul 2022
That line doesn't belong in a loop. Move it out of the loop like I had it, and it seems to do what you want.
Here it is again, using the variable names you have in the latest version of your code:
c = 3e8;
distance_matrix(distance_matrix==0) = NaN;
[R0,ixR0] = min(distance_matrix)
notNaN = ~isnan(distance_matrix);
first_idx = find(notNaN, 1, 'first')
last_idx = find(notNaN, 1, 'last')
% colOfMin is the same as ixR0 (minimum value appears only once)
% so you can use either one below in expression for tshift
[rowOfMin, colOfMin] = find(distance_matrix == R0) % Find row and col of min.
% initialize tshift to NaNs the size of distance_matrix:
tshift = NaN(rows,columns);
% overwrite the elements of tshift where distance_matrix is non-NaN:
tshift(first_idx:last_idx) = ((first_idx:last_idx)-ixR0).^2./(R0.*c);
% first_idx == ixR0, so tshift(first_idx) == 0, as expected:
Image Analyst on 16 Jul 2022
A little simpler:
% Load sample data.
% Find non-nan indexes.
goodIndexes = find(~isnan(distance_matrix));
% Get the value of distance_matrix at the first non-nan index:
v1 = distance_matrix(goodIndexes(1))
% Get the value of distance_matrix at the last non-nan index:
v2 = distance_matrix(goodIndexes(end))
Find more on Data Type Identification 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!