From e7dba33a909e158dffc6ddb3361df10d427db631 Mon Sep 17 00:00:00 2001 From: siddhu8990 Date: Tue, 7 Feb 2017 16:16:31 +0530 Subject: Support for 'lqr' and 'lqe' added --- src/c/CACSD/lqe/dlqea.c | 59 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 src/c/CACSD/lqe/dlqea.c (limited to 'src/c/CACSD/lqe') diff --git a/src/c/CACSD/lqe/dlqea.c b/src/c/CACSD/lqe/dlqea.c new file mode 100644 index 00000000..bc729fb9 --- /dev/null +++ b/src/c/CACSD/lqe/dlqea.c @@ -0,0 +1,59 @@ +/* Copyright (C) 2017 - IIT Bombay - FOSSEE + + This file must be used under the terms of the CeCILL. + This source file is licensed as described in the file COPYING, which + you should have received as part of this distribution. The terms + are also available at + http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt + Author: Siddhesh Wani + Organization: FOSSEE, IIT Bombay + Email: toolbox@scilab.in +*/ + +/*Function for calculating lqe gain. Refer 'lqe.sci' in scilab source.*/ + +#include "lqr.h" +#include "matrixTranspose.h" + +void dlqea(double* sys, int sys_rows, int sys_cols, double* X, double* K) +{ + + double *sys_lqr, *K_lqr; + int row, col; + int sys_lqr_rows = sys_cols-2; + int sys_lqr_cols = sys_rows + 2; + int no_of_ip, no_of_st; + + no_of_ip = sys[sys_rows*(sys_cols-1)+1]; + no_of_st = sys[sys_rows*(sys_cols-1)]; + + /*Transpose given system and calculate LQR with new system. Transpose result + got from LQR*/ + + sys_lqr = (double*) malloc(sys_lqr_rows*sys_lqr_cols*sizeof(double)); + + for(col = 0; col #include "lqr.h" #include "matrixTranspose.h" @@ -24,8 +25,8 @@ void dlqea(double* sys, int sys_rows, int sys_cols, double* X, double* K) int sys_lqr_cols = sys_rows + 2; int no_of_ip, no_of_st; - no_of_ip = sys[sys_rows*(sys_cols-1)+1]; - no_of_st = sys[sys_rows*(sys_cols-1)]; + no_of_ip = (int)sys[sys_rows*(sys_cols-1)+1]; + no_of_st = (int)sys[sys_rows*(sys_cols-1)]; /*Transpose given system and calculate LQR with new system. Transpose result got from LQR*/ -- cgit From fad32de9c3df04a8fb032f9c604c79c89d062154 Mon Sep 17 00:00:00 2001 From: siddhu8990 Date: Tue, 20 Jun 2017 15:26:40 +0530 Subject: Bug fixed for GSL library --- src/c/CACSD/lqe/dlqea.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/c/CACSD/lqe') diff --git a/src/c/CACSD/lqe/dlqea.c b/src/c/CACSD/lqe/dlqea.c index 63f8d62d..e0be5b34 100644 --- a/src/c/CACSD/lqe/dlqea.c +++ b/src/c/CACSD/lqe/dlqea.c @@ -54,7 +54,7 @@ void dlqea(double* sys, int sys_rows, int sys_cols, double* X, double* K) /*Calculate LQR gain*/ K_lqr = (double*) malloc(no_of_ip*no_of_st*sizeof(double)); - dlqra(sys_lqr,sys_lqr_rows,sys_lqr_cols,X,K_lqr); + dlqra(sys_lqr,sys_lqr_rows,sys_lqr_cols,NULL,NULL,NULL,X,K_lqr); dtransposea(K_lqr,sys_rows - no_of_st,no_of_st,K); } \ No newline at end of file -- cgit