⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 subsasgn.m

📁 精通matlab7 源码
💻 M
字号:
function a=subsasgn(a,s,b)%SUBSASGN Subscripted assignment for Rational Polynomial Objects.%% R(1,p)=C sets the coefficients of the Numerator of R identified% by the powers in p to the values in the vector C.%% R(2,p)=C sets the coefficients of the Denominator of R identified% by the powers in p to the values in the vector C.%% R(1,:) or R(2,:) simply replaces the corresponding polynomial% data vector.%% For example, for the rational polynomial object%           2x^2 + 3x + 4% R(x) = --------------------%         x^3 + 4x^2 + 5x + 6%% R(1,2)=5         changes the coefficient 2x^2 to 5x^2% R(2,[3 2])=[7 8] changes x^3 + 4x^2 to 7x^3 + 8x^2% R(1,:)=[1 2 3]   changes the numerator to x^2 + 2x + 3% D.C. Hanselman, University of Maine, Orono ME 04469% 7/23/00% Mastering MATLAB 6, Prentice Hall, ISBN 0-13-019468-9if length(s)>1	error('MMRP Objects Support Single Arguments Only.')endif strcmp(s.type,'()') % R(1,p) or R(2,p)   if length(s.subs)~=2      error('Two Subscripts Required.')   end   nd=s.subs{1}; % numerator or denominator   p=s.subs{2};  % powers to modify   if ndims(nd)~=2 | length(nd)~=1 | (nd~=1 & nd~=2)      error('First Subscript Must be 1 or 2.')   end   if isnumeric(p) & ...      (ndims(p)~=2 | any(p<0) | any(fix(p)~=p))      error('Second Subscript Must Contain Nonnegative Integers.')   end   if ndims(b)~=2 | length(b)~=prod(size(b))      error('Right Hand Side Must be a Vector.')   end   b=b(:).';    % make sure b is a row   p=p(:)';     % make sure p is a row   if ischar(p) & length(p)==1 & strcmp(p,':')      if nd==1  % replace numerator         r.n=b;         r.d=a.d;      else      % replace denominator         r.n=a.n;         r.d=b;      end   elseif isnumeric(p)      plen=length(p);      blen=length(b);      nlen=length(a.n);      dlen=length(a.d);      if plen~=blen         error('Sizes Do Not Match.')      end      if nd==1  % modify numerator         r.d=a.d;         rlen=max(max(p)+1,nlen);         r.n=zeros(1,rlen);         r.n=mmpadd(r.n,a.n);         idx=rlen-p;         r.n(idx)=b;      else      % modify denominator         r.n=a.n;         rlen=max(max(p)+1,dlen);         r.d=zeros(1,rlen);         r.d=mmpadd(r.d,a.d);         idx=rlen-p;         r.d(idx)=b;      end   else      error('Unknown Subscripts.')   end   else % R{ } or R.field   error('Cell and Structure Addressing Not Supported.')   enda=mmrp(r.n,r.d,a.v);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -