jury test code for stability in digital controls

I've been asked for a program that performs the jury test,could u help me please since i have never used matlab.

답변 (4개)

zaynab El Mawass
zaynab El Mawass 2019년 2월 27일

1 개 추천

function stability = Jury(coef)
stability=0;
n=size(coef,2);
if(polyval(coef,1)<0)
stability=1;
return
end
if(mod((n-1),2)==0)
if(polyval(coef,-1)<0)
stability=2;
return
end
else
if(polyval(coef,-1)>0)
stability=2;
return
end
if(abs(coef(1)>abs(coef(n))))
stability=3;
return
end
matrice=zeros(n,2*n-3);
for i=1:1:n
matrice(1,i)=coef(i);
matrice(2,i)=coef(n-i+1);
end
for i=3:2:2*n-3
for j=1:1:n-i+2
matrice(i,j)=matrice(i-2,1)*matrice(i-2,j)-matrice(i-1,1)*matrice(i-1,j);
matrice(i,n-j+1)=matrice(i,j);
for k=2:1:j
if(abs(matrice(i,k))>abs(matrice(i,1)))
stability=4;
else
stability=0;
end
end
end
end
end

댓글 수: 2

zaynab, I notice that you set stability to 0 or 4 inside the nested for loops, but you do not store the values and you do not return or break upon detecting a particular value. That would result in later iterations overwriting the stability variable. That does not sound appropriate.
Polat Alemdar
Polat Alemdar 2022년 11월 13일
편집: Polat Alemdar 2022년 11월 13일
This function accepts only numerical inputs. So coefficients of the denominator of TF are determined. In this case, Jury's stability test does not needed. One can find the poles check locations of the poles (inside or outside the unit circle). Jury's stability test is useful for undetermined denominator coefficients.

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

zaynab El Mawass
zaynab El Mawass 2019년 3월 14일

0 개 추천

Hello Walter,
I used the return expression because there is no need to go further in the test if one of the cases is broken. The system is considered directly instable.
As for the numbers, they tell which Jury test condition led to the instability. This a symbolic way.

댓글 수: 1

You do not have a break or return in your for i loop, so your loops keep going after you find a case 4.

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

Le Truc
Le Truc 2019년 5월 14일

0 개 추천

Hello Zaynab. I am come from Viet Nam. I tried your source code, but there is an error with my matlab : "Not enough input arguments". Can you help me to fix?

댓글 수: 1

You cannot run this code by clicking the green Run button: you need to go down to the command line and invoke
output_statbility = jury(vector_of_input_coefficients)
such as
output_stability = jury([-1 3.2 71])

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

riccardo agnesi
riccardo agnesi 2019년 8월 2일

0 개 추천

see this, please
https://it.mathworks.com/matlabcentral/fileexchange/72082-jury-stability-criterion?s_tid=srchtitle

카테고리

도움말 센터File Exchange에서 Multicore Processor Targets에 대해 자세히 알아보기

태그

질문:

2014년 4월 3일

편집:

2022년 11월 13일

Community Treasure Hunt

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

Start Hunting!

Translated by