📄 degree.m
字号:
function deg=degree(p,y,e)
%DEGREE Polynomial degree
%
% DEG = DEGREE(p,x,e)
%
% p : SDPVAR object.
% x : Degree w.r.t linear SDPVAR objects, can be [].
% e : If e=1, returns degree of each element in p
%
% Examples
% x1 = sdpvar(1,1);x2 = sdpvar(1,1);
% p = [x1;x1*x2+x2^2];
%
% degree(p) returns 2
%
% degree(p,x1) returns 1
%
% degree(p,[x1 x2]) returns [1 2]
%
% degree(p,[x1 x2],1) returns [1 0;1 2]
%
% degree(p,[],1) returns [1;3]
% Author Johan L鰂berg
% $Id: degree.m,v 1.2 2004/07/01 11:17:09 johanl Exp $
if isa(p,'double')
if nargin==1
deg = 0;
else
deg = zeros(1,length(y));
end
return
end
if nargin<2
y = recover(depends(p));
end
if nargin<3 | (nargin==3 & e==0)
exponent_p = exponents(p,y);
switch nargin
case 1
deg = full(max(sum(exponent_p,2)));
case {2,3}
deg = full(max(exponent_p,[],1));
otherwise
error('Too many arguments. Wadda ya mean?')
end
else
p = p(:);
if isempty(y)
yy = recover(depends(p));
else
yy = y;
end
for i = 1:length(p)
z.type = '()';
z.subs{1} = i;
exponent_p = exponents(subsref(p,z),yy);
switch nargin
case 1
deg(i,:) = full(max(sum(exponent_p,2)));
case {2,3}
deg(i,:) = full(max(exponent_p,[],1));
otherwise
error('Too many arguments. Wadda ya mean?')
end
end
if isempty(y)
deg = sum(deg,2);
end
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -