Transforming a row (inside a matrix) with equal numbers into a row with only one number
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
Alberto Acri
am 1 Nov. 2023
Bearbeitet: Dyuman Joshi
am 1 Nov. 2023
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 Kommentare
Akzeptierte Antwort
Dyuman Joshi
am 1 Nov. 2023
Bearbeitet: Dyuman Joshi
am 1 Nov. 2023
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 Kommentare
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Cell Arrays finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!