www.gusucode.com > rctobsolete 工具箱 matlab源码程序 > rctobsolete/mutools/commands/vfind.m

    % function [iv_value,iv_index] = vfind(condition,mat)
%
%   Unary FIND function across INDEPENDENT VARIABLE.  The
%   variable condition can be any valid MATLAB conditional
%   statement, using the string 'mat' to identify the matrix,
%   and 'iv' as the independent variable's value.  Both the
%   VALUES and INDICES of the applicable independent variables
%   are returned.
%
%   See also: XTRACT, XTRACTI, and FIND.

%     EXAMPLE: Suppose that MATIN is a VARYING matrix.  In
%		   order to find those entries for which the product of
%		   the norm of the matrix, and the independent variable is
%		   greater than 2, use VFIND as:
%
%		   >> [iv_value,iv_index] = vfind('iv*norm(mat)>2',MATIN);
%		   >> matprop = xtract(mat,iv_value);  % extract by value
%        or
%		   >> matprop = xtracti(mat,iv_index); % extract by index

%   Copyright 1991-2004 MUSYN Inc. and The MathWorks, Inc.

function [iv_val,iv_ind] = vfind(condstr,arg1)


  if nargin < 2
    disp('usage: [iv_value,iv_index] = vfind(condition,mat)');
    return
  end

  [mtype,mrows,mcols,mnum] = minfo(arg1);
  if strcmp(mtype,'vary')
    tmpoutval = zeros(mnum,1);
    tmpoutind = zeros(mnum,1);
    cnt = 0;

    for i=1:mnum
      mat = arg1((i-1)*mrows+1:i*mrows,1:mcols);
      iv = arg1(i,mcols+1);
      if (eval(condstr))
        tmpoutval(cnt+1,1) = iv;
        tmpoutind(cnt+1,1) = i;
        cnt = cnt+1;
      end
    end
    iv_val = tmpoutval(1:cnt);
    iv_ind = tmpoutind(1:cnt);
  else
    iv_val = [];
    iv_ind = [];
  end
%
%