Find the first element in an array
648 次查看(过去 30 天)
显示 更早的评论
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
distance_matrix(1);
distance_matrix(2);
7 个评论
Voss
2022-7-16
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:
load distance_matrix
c = 3e8;
distance_matrix(distance_matrix==0) = NaN;
[rows,columns]=size(distance_matrix);
[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:
tshift(first_idx)
回答(1 个)
Image Analyst
2022-7-16
A little simpler:
% Load sample data.
load('distance_matrix.mat')
% 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))
另请参阅
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!