subsref.m

来自「模式识别工具包」· M 代码 · 共 65 行

M
65
字号
function c = subsref(a,s)if isempty(s.subs{1}) | (length(s.subs)>1 & isempty(s.subs{2}))	c = [];	returnendif length(s.subs) == 1	if strcmp(s.subs{1},':')		c = a.d(:);	else		c = a.d(s.subs{1});	endelse	[m,k] = size(a);	imheight = a.c;	if strcmp(s.subs{1},':')		row = [1:m];	else		row = s.subs{1};		if imheight < 0			imheight = 0;		end	end	if strcmp(s.subs{2},':')		col = [1:k];	else		col = s.subs{2};		if imheight > 0			imheight = 0;		end	end	c = a;  	c.d = a.d(row(:),col);	c.c = imheight;	if a.s		cr = col; col = row; row = cr;	end	c.f = a.f(col,:);	if ~isa(a.ll,'cell')		a = dataset(a);	end	if isa(a.l,'dataset')		c.l.d = a.l.d(row,:);		c.ll = a.ll;	else		[c.l,c.ll] = renumlab(a.ll{1}(a.l(row),:));	end	if ~isempty(a.p)		[n1,n2] = renumlab(a.ll{1},c.ll);		c.p = a.p(n2);		c.p = c.p / sum(c.p);	end	if c.c > 0 & c.c*round(k/c.c) == k		if c.c*round(k/c.c) ~= k			c.c = 0;		end	elseif c.c < 0 & c.c*round(m/c.c) == m		if c.c*round(m/c.c) ~= m			c.c = 0;		end	end	c.ll = {c.ll};endreturn	

⌨️ 快捷键说明

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