can program tell if SISO or MIMO

Hello. I have a task to check if a transfer function is SISO or MIMO. How can this be done in MATLAB.
I have tried issiso() but this tell me that the transfer function is alwasy SISO.
Is there a function that can tell me if a system is SIOS or MIMO for the transfer function?
I am new with MATLAB and i havent had any luck finding anything for this so far.

2 件のコメント

Star Strider
Star Strider 2022 年 12 月 10 日
What’s the transfer function?
What Toolboxes are you using?
Matthew
Matthew 2022 年 12 月 10 日
G1 = tf([2 0], [1 2]);
G2 = tf([1 -1], [1 6 15]);
sys = series(G1,G2);
issiso(sys)
ans = logical
1
This is what i am using.
For toolboxes not sure. If there is a way i just need to be pointed in the direct.

サインインしてコメントする。

 採用された回答

Walter Roberson
Walter Roberson 2022 年 12 月 10 日

2 投票

In the case of transfer functions represented in tf() notation, you can look at size() of the function.
This might not work if the code needs to internally convert to tf to some other representation, such as can happen if you do some operations on tf that have I/O delays in them.
G1 = tf([2 0], [1 2]);
G2 = tf([1 -1], [1 6 15]);
sys = series(G1,G2)
sys = 2 s^2 - 2 s ----------------------- s^3 + 8 s^2 + 27 s + 30 Continuous-time transfer function.
sys1 = [G1,G2]
sys1 = From input 1 to output: 2 s ----- s + 2 From input 2 to output: s - 1 -------------- s^2 + 6 s + 15 Continuous-time transfer function.
sys2 = [G1; G2]
sys2 = From input to output... 2 s 1: ----- s + 2 s - 1 2: -------------- s^2 + 6 s + 15 Continuous-time transfer function.
isequal(size(sys), [1 1])
ans = logical
1
isequal(size(sys1), [1 1])
ans = logical
0
isequal(size(sys2), [1 1])
ans = logical
0

1 件のコメント

Matthew
Matthew 2022 年 12 月 11 日
Brilliant. That clears things up so much. The part i was missing was from input to output.

サインインしてコメントする。

その他の回答 (1 件)

Paul
Paul 2022 年 12 月 10 日

0 投票

Your code looks correct for determining whether or not a system is SISO
G1 = tf([2 0], [1 2]);
G2 = tf([1 -1], [1 6 15]);
sys = series(G1,G2)
sys = 2 s^2 - 2 s ----------------------- s^3 + 8 s^2 + 27 s + 30 Continuous-time transfer function.
issiso(sys)
ans = logical
1

1 件のコメント

Walter Roberson
Walter Roberson 2022 年 12 月 10 日
Yes, issiso() seems to be working
G1 = tf([2 0], [1 2]);
G2 = tf([1 -1], [1 6 15]);
sys = series(G1,G2)
sys = 2 s^2 - 2 s ----------------------- s^3 + 8 s^2 + 27 s + 30 Continuous-time transfer function.
sys1 = [G1,G2]
sys1 = From input 1 to output: 2 s ----- s + 2 From input 2 to output: s - 1 -------------- s^2 + 6 s + 15 Continuous-time transfer function.
sys2 = [G1; G2]
sys2 = From input to output... 2 s 1: ----- s + 2 s - 1 2: -------------- s^2 + 6 s + 15 Continuous-time transfer function.
issiso(sys)
ans = logical
1
issiso(sys1)
ans = logical
0
issiso(sys2)
ans = logical
0

サインインしてコメントする。

カテゴリ

ヘルプ センター および File ExchangeSignal Integrity Kits for Industry Standards についてさらに検索

製品

質問済み:

2022 年 12 月 10 日

コメント済み:

2022 年 12 月 11 日

Community Treasure Hunt

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

Start Hunting!

Translated by