How can I check the Transfer function stability ?

How can I check the Transfer function stability? Is it stable, unstable, marginally stable or BIBO Stable?
Is there a way in matlab tell me that ?
see this example, Can I get the answer by Matlab?

7 Comments

well , have you looked at the help of isstable ?
help isstable
ISSTABLE True for stable filter FLAG = ISSTABLE(B,A) returns a logical output, FLAG, equal to TRUE if the filter specified by numerator coefficients B, and denominator coefficients A, is stable. Input vectors B, and A define a filter with transfer function: jw -jw -jmw jw B(e) b(1) + b(2)e + .... + b(m+1)e H(e) = ---- = ------------------------------------ jw -jw -jnw A(e) a(1) + a(2)e + .... + a(n+1)e FLAG = ISSTABLE(SOS) returns TRUE if the filter specified using the second order sections matrix, SOS, is stable. SOS is a Kx6 matrix, where the number of sections, K, must be greater than or equal to 2. Each row of SOS corresponds to the coefficients of a second order filter. From the transfer function displayed above, the ith row of the SOS matrix corresponds to [bi(1) bi(2) bi(3) ai(1) ai(2) ai(3)]. FLAG = ISSTABLE(D) returns TRUE if the digital filter, D, is stable. You design a digital filter, D, by calling the designfilt function. % Example 1: % Create an unstable filter and verify its instability. b = [1 2 3 4 5 5 1 2]; % numerator coefficients a = [4 5 6 7 9 10 4 6]; % denominator coefficients flag = isstable(b,a) % determine if the filter is stable zplane(b,a) % zero-pole plot for filter % Example 2: % Create a filter and determine its stability for different % coefficient data types and tolerances. b = [1 -.5]; % numerator coefficients a = [1 -.999999999]; % denominator coefficients act_flag1 = isstable(b,a) % determine if its stable act_flag2 = isstable(single(b),single(a)) % becomes unstable due to % precision zplane(b,a) % zero-pole plot for filter % Example 3: % Design a Butterworth highpass IIR filter using second order sections % and determine its stability. [z,p,k] = butter(6,0.7,'high'); SOS = zp2sos(z,p,k); flag = isstable(SOS) % determine if the filter is stable zplane(z,p) % zero-pole plot for filter See also FVTOOL, FILTORD, ISALLPASS, ISLINPHASE, ISMAXPHASE, ISMINPHASE Documentation for isstable doc isstable Other functions named isstable DynamicSystem/isstable
Though really that would appear to only answer the possibility of Unstable, without being able to classify what kind of stability a stable system has.
Paul
Paul on 13 Dec 2020
Edited: Paul on 15 Dec 2020
Looks like that version of isstable is from the the Signal Processing Toolbox. If anything, this problem calls for the Control System Toolbox because the SPT version doesn't supprort continuous transfer function inputs.
However, just like the SPT version, the CST version of isstable can't, in general, be used either because it only returns true if the system is stable and false otherwise. So for this problem, isstable is not completely helpful. If it returns true, the answer could be [a] or [c]. If false then [b] or [d] (isstable considers marginally stable to be unstable). There is at least one other subtlety to consider before using isstable.
In order to answer the question, one has to know what the four answers mean and then how to relate those meanings to properties of Gc, from which the answer can be determined. I suppose Matlab could be used to check for those properties of Gc, but that would be massive overkill for this problem.

Sign in to comment.

Answers (1)

Hi
You can use isstable function to find if the system is stable or not. For more, information refer to this documentation. If the function return stable, then check the condition of different stability to comment on its type. For your case, it is unstable. Consider the code below:
TF=tf([1 -1 0],[1 1 0 0]);
isstable(TF)

3 Comments

okay and how do you check the conditions of the various kinds of stability?
There are some approaches using Routh Hurwitz, Nyquist plot etc. which can be used to check those conditions.
Mahesh,
Actually, in this case isstable yields a misleading answer, IMO:
>> isstable(TF)
ans =
logical
0
I'm pretty sure that if the OP selected answer (d) for the problem it would be marked incorrect.
As best I can tell, isstable checks a) internal stability, and b) uses the term "stable" on the doc page to mean asymptotically stable (i.e, a system that is internally, marginally stable would returns false).
But this problem appears to be asking about external stability (because it specifies a transfer function, not a realization), which would be another reason to be careful about just using isstable for this problem.

Sign in to comment.

Tags

Asked:

on 12 Dec 2020

Commented:

on 15 Dec 2020

Community Treasure Hunt

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

Start Hunting!