📄 vis_valuetype.m
字号:
function flag=vis_valuetype(value, valid, str);% VIS_VALUETYPE Used for type checks in SOM Toolbox visualization routines%% flag = vis_valuetype(value, valid, str)%% Input and output arguments:% value (varies) variable to be checked% valid (cell array) size 1xN, cells are strings or vectors (see below)% str (string) 'all' or 'any' (default), determines whether% all or just any of the types listed in argument 'valid' % should be true for 'value'%% flag (scalar) 1 or 0 (true or false) %% This is an internal function of SOM Toolbox visualization. It makes% various type checks. For example:%% % Return 1 if X is a numeric scalar otherwise 0:% f=vis_valuetype(X,{'1x1'});%% % Return 1 if X is a ColorSpec, that is, a 1x3 vector presenting an RGB% % value or any of strings 'red','blue','green','yellow','magenta','cyan',% % 'white' or 'black' or their shortenings 'r','g','b','y','m','c','w','k': % f=vis_valueype(X,{'1x3rgb','colorstyle'})%% % Return 1 if X is _both_ 10x3 size numeric matrix and has RGB values as rows% f=vis_valuetype(X,{'nx3rgb',[10 3]},'all')%% Strings that may be used in argument valid: % id is true if value is % % [n1 n2 ... nn] any n1 x n2 x ... x nn sized numeric matrix% '1x1' scalar (numeric)% '1x2' 1x2 vector (numeric)% 'nx1' any nx1 numeric vector% 'nx2' nx2% 'nx3' nx3% 'nxn' any numeric square matrix% 'nxn[0,1]' numeric square matrix with values in interval [0,1]% 'nxm' any numeric matrix% '1xn' any 1xn numeric vector% '1x3rgb' 1x3 vector v for which all(v>=0 & v<=1), e.g., a RGB code% 'nx3rgb' nx3 numeric matrix that contains n RGB values as rows% 'nx3dimrgb' nx3xdim numeric matrix that contains RGB values% 'nxnx3rgb' nxnx3 numeric matrix of nxn RGB triples% 'none' string 'none'% 'xor' string 'xor'% 'indexed' string 'indexed'% 'colorstyle' strings 'red','blue','green','yellow','magenta','cyan','white' % or 'black', or 'r','g','b','y','m','c','w','k' % 'markerstyle' any of Matlab's marker chars '.','o','x','+','*','s','d','v',% '^','<','>','p'or 'h'% 'linestyle' any or Matlab's line style strings '-',':','--', or '-.'% 'cellcolumn' a nx1 cell array% 'topol_cell' {lattice, msize, shape} % 'topol_cell_no_shape' {lattice, msize}% 'string' any string (1xn array of char) % 'chararray' any MxN char array% Copyright (c) 1999-2000 by the SOM toolbox programming team.% http://www.cis.hut.fi/projects/somtoolbox/ % Version 2.0beta Johan 201099 juuso 280800if nargin == 2 str='any';endflag=0; sz=size(value);dims=ndims(value);% isnumericnumeric=isnumeric(value);character=ischar(value);% main loop: go through all types in arg. 'valid'for i=1:length(valid), if isnumeric(valid{i}), % numeric size for double matrix if numeric & length(valid{i}) == dims, flag(i)=all(sz == valid{i}); else flag(i)=0; % not numeric or wrong dimension end else msg=''; % for a error message inside try try switch valid{i} % scalar case '1x1' flag(i)=numeric & dims == 2 & sz(1)==1 & sz(2) ==1; % 1x2 numeric vector case '1x2' flag(i)=numeric & dims == 2 & sz(1)==1 & sz(2) == 2; % 1xn numeric vector case '1xn' flag(i)=numeric & dims == 2 & sz(1) == 1; % any numeric matrix case 'nxm' flag(i)=numeric & dims == 2; % nx3 numeric matrix case 'nx3' flag(i)=numeric & dims == 2 & sz(2) == 3; % nx2 numeric matrix case 'nx2' flag(i)=numeric & dims == 2 & sz(2) == 2; % nx1 numeric vector case 'nx1' flag(i)=numeric & dims == 2 & sz(2) == 1; % nx1xm numric matrix case 'nx1xm' flag(i)=numeric & dims == 3 & sz(2) == 1; % nx3 matrix of RGB triples case 'nx3rgb' flag(i)=numeric & dims == 2 & sz(2) == 3 & in0_1(value); % RGB triple (ColorSpec vector) case '1x3rgb' flag(i) = numeric & dims == 2 & sz(1)==1 & sz(2) == 3 & in0_1(value); % any square matrix case 'nxn' flag(i)=numeric & dims == 2 & sz(1) == sz(2); % nx3xdim array of nxdim RGB triples case 'nx3xdimrgb' flag(i)=numeric & dims == 3 & sz(2) == 3 & in0_1(value); % nxnx3 array of nxn RGB triples case 'nxnx3rgb' flag(i)= numeric & dims == 3 & sz(1) == sz(2) & sz(3) == 3 ... & in0_1(value); % nxn matrix of values between [0,1] case 'nxn[0,1]' flag(i)=numeric & dims == 2 & sz(1) == sz(2) & in0_1(value); % string 'indexed' case 'indexed' flag(i) = ischar(value) & strcmp(value,'indexed'); % string 'none' case 'none' flag(i) = character & strcmp(value,'none'); % string 'xor' case 'xor' flag(i) = character & strcmp(value,'xor'); % any string (1xn char array) case 'string' flag(i) = character & dims == 2 & sz(1)<=1; % any char array case 'chararray' flag(i) = character & dims == 2 & sz(1)>0; % ColorSpec string case 'colorstyle' flag(i)=(character & sz(1) == 1 & sz(2) == 1 & ... any(ismember('ymcrgbwk',value))) | ... (ischar(value) & any(strcmp(value,{'none','yellow','magenta',... 'cyan','red','green','blue','white','black'}))); % any valid Matlab's Marker case 'markerstyle' flag(i)=character & sz(1) == 1 & sz(2) == 1 & ... any(ismember('.ox+*sdv^<>ph',value)); % any valid Matlab's LineStyle case 'linestyle' str=strrep(strrep(strrep(value,'z','1'),'--','z'),'-.','z'); flag(i)=character & any(ismember(str,'z-:')) & sz(1)==1 & (sz(2)==1 | sz(2)==2); % any struct case 'struct' flag(i)=isstruct(value); % nx1 cell array of strings case 'cellcolumn_of_char' flag(i)=iscell(value) & dims == 2 & sz(2)==1; try, char(value); catch, flag(i)=0; end % mxn cell array of strings case '2Dcellarray_of_char' flag(i)=iscell(value) & dims == 2; try, char(cat(2,value{:})); catch, flag(i)=0; end % valid {lattice, msize} case 'topol_cell_no_shape' flag(i)=1; if ~iscell(value) | length(size(value)) ~= 2 | size(value,2)~=2 flag(i)=0; else if vis_valuetype(value{1},{'string'}), switch value{1} case { 'hexa','rect'} ; otherwise flag(i)=0; end end if ~vis_valuetype(value{2},{'1xn'}), flag(i)=0; end end % valid {lattice, msize, shape} case 'topol_cell' flag(i)=1; if ~iscell(value) | length(size(value)) ~= 2 | size(value,2) ~= 3, flag(i)=0; else if vis_valuetype(value{1},{'string'}), switch value{1} case { 'hexa','rect'} ; otherwise flag(i)=0; end end if ~vis_valuetype(value{2},{'1xn'}) flag(i)=0; end if ~vis_valuetype(value{3},{'string'}) flag(i)=0; else switch value{3} case { 'sheet','cyl', 'toroid'} ; otherwise flag(i)=0; end end end otherwise msg='Unknown valuetype!'; end catch % error during type check is due to wrong type of value: % lets set flag(i) to 0 flag(i)=0; end % Unknown indetifier? error(msg); end % set flag according to 3rd parameter (all ~ AND, any ~ OR) if strcmp(str,'all'); flag=all(flag); else flag=any(flag); endendfunction f=in0_1(value)f=all(value(:) >= 0 & value(:)<=1);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -