期待大家都來擴(kuò)展北太天元的功能,舉例北太天元實(shí)現(xiàn)構(gòu)造漢克爾矩陣(hankel m

% 構(gòu)造漢克爾矩陣(hankel matrix)
% 漢克爾矩陣 (Hankel Matrix) 是指每一條副對角線上的元素都相等的矩陣,
% 在數(shù)字信號處理、數(shù)值計(jì)算、系統(tǒng)控制等領(lǐng)域均有廣泛的應(yīng)用
% 例如
%?h = [ 1?2?3 ;
%???????2?3?4 ;
%???????3?4?5 ];
% 使用方法:
%?hankel(c)
%?hankel(c,r)
%?H = hankel(c) 返回其第一列是 c 并且其第一個(gè)反對角線下方的元素為零的 Hankel 方陣。
%?H = hankel(c,r) 返回其第一列是 c 并且其最后一行是 r 的 Hankel 矩陣。如果 c 的最后一個(gè)元素與 r 的第一個(gè)元素不同,則 c 的最后一個(gè)元素優(yōu)先。
% 例如:
% C = [1;2;3];?% 第一列
% R = [ 3, 4, 5 6]; %最后一行
% h = hankel(C,R)
% 輸出
% h = [ 1??2??3??4
%???????2??3??4??5
%???????3??4??5??6 ]
function 返回值 = hankel (c, r)
?if (nargin < 1)
?????help hankel
??????return;???
?end
?if (nargin == 1)
???if (~isvector (c))
?????error ("hankel: C 必須是一個(gè)向量");
???end
???nr = length (c);
???nc = nr;
???data = [c(:) ; zeros(nr, 1)];
?else
???if (~(isvector (c) && isvector (r)))
?????error ("hankel: C 和 R 都必須是向量");
???elseif (r(1) != c(end))
?????warning ("hankel: C的最后一個(gè)元素和R的第一個(gè)元素不同,優(yōu)先使用C的最后一個(gè)元素");
???end
???nr = length (c);
???nc = length (r);
??????r2 = r(2:end);
???data = [c(:) ; r2(:)]
?end
???返回值 = zeros(nr,nc);
???for i=1:nc
??????返回值(:,i) = data(i : i+nr-1)
???end
end