Detecting Entire Column has the same integer value
12 ビュー (過去 30 日間)
古いコメントを表示
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 件のコメント
採用された回答
Stijn Haenen
2019 年 11 月 26 日
Try this:
if a(:,1)==a(1,1)&mod(a(1,1),1)==0
Ans=[1 0];
else
Ans=[0 0];
end
2 件のコメント
Adam Danz
2019 年 11 月 26 日
編集済み: Adam Danz
2019 年 11 月 30 日
This solution only analyzes the first column which would produce the following result which indicates that col 2 does not contain duplicate integers, but it does.
a=[1 1;
1 2;
1 2];
Ans = [1,0]
See my answer for a simpler and cleaner solution that generalizes to any number of columns and considers all columns.
その他の回答 (2 件)
Adam Danz
2019 年 11 月 26 日
編集済み: Adam Danz
2019 年 11 月 26 日
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
0 件のコメント
Image Analyst
2019 年 11 月 26 日
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.
0 件のコメント
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!