Создать массив объектов TF в Matlab - PullRequest
4 голосов
/ 09 мая 2019

Если бы я хотел создать массив указанного класса, я бы использовал такой подход, как this . Таким образом, создание массива int выглядит следующим образом:

Aint = int16.empty(5,0);
Aint(1) = 3;

И все работает отлично. Теперь я хочу создать массив объектов класса tf. Мой подход был похож:

L = tf.empty(5, 0);
s = tf('s');
L(1) = s;

Это дает мне ошибку:

Error using InputOutputModel/subsasgn (line 57)
Not enough input arguments.

Error in tf_array (line 6)
L(1) = s;

Я также убедился, что отображается class(s), и он правильно говорит, что это tf. Что я здесь не так делаю?

1 Ответ

2 голосов
/ 09 мая 2019

Как обычно, в документации MATLAB есть пример того, как делать такие вещи:

 sys = tf(zeros(1,1,3));
 s = tf('s');                                                  
 for k = 1:3                                                             
   sys(:,:,k) = k/(s^2+s+k);                                          
 end

Итак, проблема, вероятно, заключается в том, чтоиндексирование L(1) неверно, оно должно быть L(:,:,1).

Обратите внимание, что tf.empty(5, 0) дает указание создать массив 5x0 (т. е. пустой массив).Там нет никакого смысла в этом.Вы можете просто пропустить эту инструкцию.Потому что когда вы позже сделаете L(:,:,1), вы будете увеличивать размер массива любым способом (он начинается с 0 элементов, вы хотите назначить новый элемент, ему нужно перераспределить массив).Вы должны всегда стремиться создавать массивы правильного размера с самого начала.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...