Create a matrix on the basis of other matrix
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
luca
am 14 Okt. 2019
Beantwortet: Andrei Bobrov
am 14 Okt. 2019
Hi given a matrix
M= [ 0 4 8 6;
0 0 0 6;
0 0 0 6;
2 0 0 0;
0 0 0 0;
0 0 0 1;
0 4 7 0;
5 3 0 0;
0 0 0 6;
0 0 0 6;];
I want to create a new matrix A that contain just the diversity, no matter of the order and with no zeros.
so in this case
A = [2 4 8 6;
5 3 7 1];
Someone can help me with the code?
0 Kommentare
Akzeptierte Antwort
Fabio Freschi
am 14 Okt. 2019
Bearbeitet: Fabio Freschi
am 14 Okt. 2019
Under the assumption that the "diversity" contains the same number of entries each row
for i = 1:size(M,2)
b(:,i) = unique(nonzeros(M(:,i)));
end
If each column can have different number of interest
b = arrayfun(@(i)unique(nonzeros(M(:,i))),1:size(M,2),'UniformOutput',false)
then you can access to the unique values of the jth row as
b{j}
0 Kommentare
Weitere Antworten (1)
Andrei Bobrov
am 14 Okt. 2019
[~,j] = find(M);
C = accumarray(j,M(M ~= 0),[],@(x){unique(x,'stable')})
if all(diff(cellfun(@numel,C)) == 0)
C = [C{:}];
end
0 Kommentare
Siehe auch
Kategorien
Mehr zu Logical 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!