Multiplication of matrix with It's Diagonal Element to It's Row

I Have this below matrix.
z=[a11 a12 a13;
b21 b22 b23;
c31 c32 c33]
I want out put of the Matrix like this.
q=[1 -(a12/a11) -(a13/a11);
(-b21/b22) 1 (-b23/b22);
(-c31/c33) (-c32/c33) 1]
Can you please send me program for this Matrix operation.

 Akzeptierte Antwort

Azzi Abdelmalek
Azzi Abdelmalek am 15 Feb. 2014
Bearbeitet: Azzi Abdelmalek am 15 Feb. 2014
a=[1 2 3;4 5 6;7 8 9]
out=bsxfun(@rdivide, -a,diag(a))
out(sub2ind(size(a),1:size(a,1),1:size(a,1)))=1

3 Kommentare

Thank you Sir, Its Working. But, In Matrix i am using Transfer function as a element.
This is working of only numerical values not for Transfer functions.
out(sub2ind(size(a),1:size(a,1),1:size(a,1)))=1
This is not working for Transfer functions.
You should precise that.
m=tf(1,1:2)
a=[m m*2;1+m 5*m+2] % Example
%-------------------------
b=repmat(tf(1,1),size(a))
for k=1:size(a,1)
b(k,:)=-a(k,:)/a(k,k)
b(k,k)=1
end
clc
K=[1 2 3 4; 5 6 7 8; 9 10 11 12; 13 14 15 16];
L=[1 2 3 4; 5 6 7 8; 9 10 11 12; 13 14 15 16];
T=[1 2 3 4; 5 6 7 8; 9 10 11 12; 13 14 15 16];
one=[1 2 3 4; 5 6 7 8; 9 10 11 12; 13 14 15 16];
n=4;
for i=1:n
for j=1:n
d{i,j}=tf([K(i,j)],[T(i,j) one(i,j)], [L(i,j)]);
end
end
a=d
%d = 4x4 Matrix with Transfer Function elements
out=bsxfun(@rdivide, -a,diag(a))
%above command giving error
out(sub2ind(size(a),1:size(a,1),1:size(a,1)))=1

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Produkte

Community Treasure Hunt

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

Start Hunting!

Translated by