Transforming a row (inside a matrix) with equal numbers into a row with only one number
2 次查看(过去 30 天)
显示 更早的评论
I have amatrix of the following type:
in = [228 228 228
231 231 231
183 183 183
157 157 157
168 168 168];
I need to know if the 3 columns of each row are equal and, if they are, get an Rx1 matrix at the end:
out = [228; 231; 183; 157; 168];
If they are not, keep the initial matrix Rx3 ('in' matrix) and tell me in which row the values of the three columns are not the same.
in_new = [228 228 228
231 231 231
183 200 183
157 157 157
168 168 200];
out_new = [3;5];
0 个评论
采纳的回答
Dyuman Joshi
2023-11-1
编辑:Dyuman Joshi
2023-11-1
in1 = [228 228 228
231 231 231
183 183 183
157 157 157
168 168 168];
[a1, b1] = transform(in1)
in2 = [228 228 228
231 231 231
183 200 183
157 157 157
168 168 200];
[a2, b2] = transform(in2)
function [out, out_new] = transform(in)
idx = all(~diff(in, [], 2), 2);
if all(idx)
out = in(:,1);
out_new = [];
else
out = in;
out_new = find(~idx);
end
end
0 个评论
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Resizing and Reshaping Matrices 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!