27 lines
1.0 KiB
Matlab
27 lines
1.0 KiB
Matlab
function [R,K, d] = rigidityMatrixFnc (edgeL)
|
|
%% Fungsi ini digunakan untuk menggenerasi fungsi rigidity R.
|
|
%% diaman fungsi tersebut adalah hasil turunan dari fungsi edge
|
|
addpath("./networks-toolbox");
|
|
pkg load symbolic
|
|
% generasi koneksi bentuk incidence
|
|
tmp = edgeL2adj(edgeL);
|
|
d = ones(numEdges(tmp),1);
|
|
gInc = adj2inc(tmp);
|
|
%% drawCircGraph(tmp)
|
|
tmp = getNodes(gInc,'adjacency')
|
|
% generasi vector error menggunakan matrix
|
|
% koneksi
|
|
K = kron(adj2inc(edgeL2adj(edgeL))',eye(2));
|
|
edgeVector = @(x,k) k*x;
|
|
% hasil turunan dari fungsi edge
|
|
str = "errBlockDiagonal = @(errVec) (blkdiag(";
|
|
for i = 1:2:(length(tmp)*2)-2
|
|
str = strcat(str,sprintf("errVec(%i:%i)', ",i,i+1));
|
|
endfor
|
|
str = strcat(str,sprintf("errVec(%i:%i)' ));",i+2,i+3));
|
|
% return sebagai fungsi R
|
|
eval(str)
|
|
R = @(x,k) errBlockDiagonal(edgeVector(x,k))*k;
|
|
|
|
endfunction
|