Replace specific/diagonal elements in Matrix using editor, scripting

2 Ansichten (letzte 30 Tage)
Hello,
Looking a simple way to replace diagonal values in vector to 0. The matrix is a variance-covariance matrix, however in system will be assuming covariance are
zero, and are independent to each. Have the following matrix:
A = [ 2.5 0.25; 0.25 2.4]
B = flip(A) %Flipped to get in correct orientation to select diagonals 0.25, 0.25
%Not sure if it is possible to select mirrored diagonal in original matrix A
Covariance values are 0.25, which would like to set to zero. However these value could change, therefore if had method to replace these diagonal values with respect to m-row, n-column position, or other method?
If can be selected from original matrix A, would be ideal to avoid flipping.
Thanks in advance
kind rgds
  2 Kommentare
Max Murphy
Max Murphy am 6 Jan. 2020
Will your system always be a bivariate distribution or will A ever be larger than 2x2?
Vincent Hodnett
Vincent Hodnett am 6 Jan. 2020
Bearbeitet: Vincent Hodnett am 6 Jan. 2020
Yes, for this instance. Shall only be 2x2 matrix.Thks

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Max Murphy
Max Murphy am 6 Jan. 2020
% If this is to be called iteratively
% Example while loop
iteration = 0;
while (iteration < numel(data)) % Some conditional to stay in your loop
if ~iteration
% Initially
% A = [2.5 0; 0 2.4]; % Can you just initialize it with zeros?
% Alternatively, suppose it was imported elsewhere:
A = [ 2.5 0.25; ... % Top right = A(1,2);
0.25 2.4]; % Bottom left = A(2,1);
A = diag(diag(A)); % Keep only diagonal elements
else
A(1,2) = cov_ab; % Assume you get this from elsewhere
A(2,1) = cov_ba;
end
...
% Get covariance values
doc cov % May be helpful
...
iteration = iteration + 1;
end
  1 Kommentar
Vincent Hodnett
Vincent Hodnett am 6 Jan. 2020
Bearbeitet: Vincent Hodnett am 6 Jan. 2020
Hello Max,
Thanks, for advice. Yes, the A = diag(diag(A)) will solve issue. To keep only diagonal element
A = [ 2.5 0.25; 0.25 0.78];
A = diag(diag(A))
% This will give the matrix that is needed, 0.25 and 0.25 are equal to 0 and we have kept only %the variance, diagonal. :) :)
Thanks,
kind regards Vincent

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Operating on Diagonal Matrices 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!

Translated by