2011-05-25 60 views
0

我想在某些控制系統中進行開環分析。數據可能不超過2個維度!

首先,我分析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); 

我怎樣才能解決這個問題呢?

+1

'size(t)'和'size(y)'的輸出是什麼? – abcd 2011-05-25 06:26:18

+0

'size(t)= 1 1001' 'size(y)= 1001 1 3' – 2011-05-25 06:28:30

回答

0

嗯,我想出了probelm,它是在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]); 
1

原因plot給你一個錯誤是因爲y是一個3D數組,它期望一個2D矩陣。 y中的第二個維度是單個維度,對於所有目的都可以刪除。使用函數squeeze擺脫單身人士維度。嘗試以下操作:

plot(t',squeeze(y)) 
+0

嗯,它有效,但結果恰好是PT1,並且PT2響應沒有延遲! – 2011-05-25 06:52:02

+0

@ Eng.Fouad:恩,我不知道你的程序的其餘部分是否正確,因爲我不知道上下文,所以不能評論。我只是回答了你爲什麼會遇到錯誤「數據可能不超過2個維度」的問題。 – abcd 2011-05-25 07:30:25

相關問題