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

📄 min.m

📁 几个关于多小波的程序
💻 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 + -