Данные могут иметь не более двух измерений! - PullRequest
0 голосов
/ 25 мая 2011

Я пытаюсь выполнить анализ с обратной связью в некоторой системе управления.

Сначала я анализирую PT1, и он отлично работает!

% Assigning the variables
Ksys = 0.8667;
T1 = 1.65;

% PT1 modeling
num = [0 Ksys];
den = [T1 1];
PT1 = tf(num, den);

% Step Response
t = 0:0.01:10;
y = 4.5 * step(PT1, t);

% Plotting
plot(t, y);
ylim([0, 6]);

Но когда я анализирую завод высшего порядка:

% Assigning the variables
Ksys = 0.8667;
Tc = 1.65;
Td = 0.25;

% PTn modeling
num = [0 Ksys];
den = [Tc 1];
PT1 = tf(num, den);
sh = pade(Td, 2);
PTn = PT1 * sh;

% Step Response
t = 0:0.01:10;
y = 4.5 * step(PTn, t);

% Plotting
plot(t, y);
ylim([0, 6]);

выдает следующую ошибку:

??? Error using ==> plot
Data may not have more than 2 dimensions

Error in ==> TestProject at 25
plot(t, y);

Как я могу решить эту проблему?

Ответы [ 2 ]

1 голос
/ 25 мая 2011

Причина, по которой plot выдает ошибку, заключается в том, что y является трехмерным массивом и ожидает двухмерную матрицу. Второе измерение в y является одноэлементным измерением и для всех целей может быть удалено. Используйте функцию squeeze, чтобы избавиться от одноэлементного измерения. Попробуйте следующее:

plot(t',squeeze(y))
0 голосов
/ 29 мая 2011

Ну, я разобрался с проблемой, это была функция pade ().Вот окончательный код:

% Assigning the variables
Ksys = 0.8667;
Tc = 1.65;
Td = 0.25;

% PTn modeling
num = [0 Ksys];
den = [Tc 1];
PT1 = tf(num, den);
[nums, dens] = pade(Td, 2);
sh = tf(nums, dens);
PTn = PT1 * sh;

% Step Response
t = 0:0.01:10;
y = 4.5 * step(PTn, t);

% Plotting
plot(t, y);
ylim([0, 6]);
...