unfoldmw.m

来自「PLS_Toolbox是用于故障检测与诊断方面的matlab工具箱」· M 代码 · 共 37 行

M
37
字号
function mwauf = unfoldmw(mwa,order)
%UNFOLDMW Unfolds multiway arrays along specified order
%  The inputs are the multiway array to be unfolded (mwa),
%  and the dimension number along which to perform the
%  unfolding (order). The output is the unfolded array (mwauf).
%  This function is used in the development of PARAFAC models
%  in the alternating least squares steps.
%
%I/O: mwauf = unfoldmw(mwa,order);
%
%See also: MPCA, OUTER, OUTERM, PARAFAC, TLD

%Copyright Eigenvector Research, Inc. 1998
%bmw

mwasize = size(mwa);
ms = mwasize(order);
po = prod(mwasize);
ns = po/ms;
if order ~= 1
  pod = prod(mwasize(1:order-1));
end
mwauf = zeros(ms,ns);
for i = 1:ms
  if order == 1
    mwauf(i,:) = mwa(i:ms:po);
  else
    inds = zeros(1,ns); k = 1; fi = (i-1)*pod + 1;
	for j = 1:ns/pod
	  inds(k:k+pod-1) = fi:fi+pod-1;
	  fi = fi + ms*pod;
	  k = k + pod;
	end
	mwauf(i,:) = mwa(inds);
  end
end

⌨️ 快捷键说明

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