📄 min.m
字号:
function [Smin,Imin] = min(S,varargin)% MIN -- min function for symbolic constants%% [Smin,Simin] = min(S,[],dim)%% This is the same as the usual MIN function, but for symbolic% constants. It converts S to double, finds the position of the % smallest entry, and returns the original value at that position.%% This routine rejects matrices with symbolic variables.% Copyright (c) 2004 by Fritz Keinert (keinert@iastate.edu),% Dept. of Mathematics, Iowa State University, Ames, IA 50011.% This software may be freely used and distributed for non-commercial% purposes, provided this copyright statement is preserved, and% appropriate credit for its use is given.%% Last update: Feb 20, 2004if ~isnumeric(S) n = size(S); S = reshape(simplify(S(:)),n);endif issymbolic(S) error('MIN is not defined for symbolic variables');endn = size(S);switch nargin case 2% Smin = min(S,T) T = varargin{1}; if ~isnumeric(T) m = size(T); T = reshape(simplify(T(:)),m); end if issymbolic(T) error('MIN is not defined for symbolic variables'); end m = size(T); if (prod(m) == 1)% T is scalar DS = double(S(:)); DT = double(T); Smin = S(:); for i = 1:length(Smin) if (DS(i) > DT) Smin(i) = T; end Smin = reshape(Smin,n); end return elseif (prod(n) == 1) % S is scalar DS = double(S); DT = double(T(:)); Smin = T(:); for i = 1:length(Smin) if (DT(i) > DS) Smin(i) = S; end Smin = reshape(Smin,m); end return else% both are matrices if (length(m) ~= length(n)) error('dimensions must agree'); end if ~iszero(m-n) error('dimensions must agree'); end DS = double(S(:)); DT = double(T(:)); Smin = S(:); for i = 1:length(Smin) if (DS(i) > DT(i)) Smin(i) = T(i); end Smin = reshape(Smin,n); end return end case {1,3} if (nargin == 1) lnd = 1; % leading nonzero dimension for i = 2:length(n) if (n(lnd) == 1 & n(i) > 1) lnd = i; end end else lnd = varargin{2}; end D = reshape(double(S(:)),n); [Dmin,Imin] = min(D,[],lnd); nn = [n(1:lnd-1),1,n(lnd+1:end)]; Smin = sym(zeros(size(Dmin))); for i = 1:prod(nn) ind = index(nn,i); Smin(ind{:}) = S(ind{1:lnd-1},Imin(ind{:}),ind{lnd+1:end}); endend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -