dividing a diagonal matrix into same and different diagonal elements

I have a diagonal matrix as:
V = [ 0.0001 0 0 0 0;
0 0.0001 0 0 0;
0 0 3.6388 0 0;
0 0 0 5.3610 0;
0 0 0 0 6.0004];
I want to find the number of diagonal elements which are same in values. 2ndly I want to separate them in a variable, how will I do it? Here V is a 5x5 matrix, but it may be any square size matrix in general.

답변 (1개)

Dyuman Joshi
Dyuman Joshi 2021년 5월 16일
편집: Dyuman Joshi 2021년 5월 16일
%This will give the diagonal elements in a separate variable.
z = diag(V);
%Finding the number of repeated values
y = unique(z);
n = histc(z,y);
x = n(n>1); %If there are more than 1 repeating values, answer will be an array
a = y(n>1); %Get the variables that are repeated

댓글 수: 3

z = diag(V);
y = unique(z);
n = histc(z,y);
x = n(n>1);
a = repelem(y(n>1), n(n>1)); %repeated values
fprintf('The same values are: %d.\n', n(n>1)) %message
Dyuman Joshi
Dyuman Joshi 2021년 5월 17일
편집: Dyuman Joshi 2021년 5월 17일
I tested the function as stand-alone by giving it V1 as input and it works fine. This probably what you also said. Not sure why it doesn't run in your code. I am evaluating your code and will update here.
Is it necessary to use functions? Your code is not the optimised way to write functions.

댓글을 달려면 로그인하십시오.

카테고리

도움말 센터 및 File Exchange에서 Operating on Diagonal Matrices에 대해 자세히 알아보기

질문:

2021년 5월 16일

댓글:

2021년 5월 17일

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by