Detecting Entire Column has the same integer value
Mostra commenti meno recenti
Hello, I need to determine whether the entire row has the same integer value. For example;
A=[1 1;
1 0.5;
1 0.5]; The first column is all ones. Therefore, I need ans = [1 0]
However,
A=[0.5 -1
0.5 0
0.5 1]; The first column is all 0.5. I need ans = [0 0]
4 Commenti
Adam Danz
il 26 Nov 2019
Your title asks for identical values within the entire column but within your question you ask about identical values in rows. The two examples you gave don't make sense either because both of them show identical values in column 1 but the expected outputs you shared differ. Also, the expected outputs you shared are 1 x 2 vectors so I'm guessing that you want to focus on columns, not rows (since there are 2 cols, and 3 rows).
Image Analyst
il 26 Nov 2019
Adam, in the second example, the result for column 1 is zero because there are no integers in that column (0.5 is not an integer).
Yunus Yilmaz
il 26 Nov 2019
Risposta accettata
Più risposte (2)
To determine which columns contain identical values,
A=[1 1;
1 0.5;
1 0.5];
B = all(diff(A,[],1) == 0,1) % B = [1,0]
To determine which columns contain identical values that are integers,
B = all(diff(A,[],1) == 0,1) & mod(A(1,:),1)==0
Image Analyst
il 26 Nov 2019
Here's another way that works, though probably not the most compact
A=[1 1;
1 0.5;
1 0.5] % The first column is all ones. Therefore, I need ans = [1 0]
% Set non-integers to nan
mask = A == int32(A)
[rows, columns] =size(A);
output = zeros(1, columns); % Preallocate output.
for col = 1 : columns
% Set output to 1 if all of the values equal the first value.
if all(mask(:, col))
output(col) = all(A(:, col) == A(1, col));
end
end
output % Echo to command window.
A=[0.5 -1
0.5 0
0.5 1] % The first column is all 0.5. I need ans = [0 0]
% Set non-integers to nan
mask = A == int32(A)
[rows, columns] =size(A);
output = zeros(1, columns); % Preallocate output.
for col = 1 : columns
% Set output to 1 if all of the values equal the first value.
if all(mask(:, col))
output(col) = all(A(:, col) == A(1, col));
end
end
output % Echo to command window.
Categorie
Scopri di più su Operators and Elementary Operations in Centro assistenza e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!