1
2
3
4function [y, mcWall] = mclms(z, b, mu, order, beta, zp, mw1, ...
5 mcf, mcAdapt, K)
6
7
8narginchk(10, 10);
9if ~isreal(z) || length(size(z)) ~= 2 || ~all(all(isfinite(z)))
10 error('z must be a real matrix');
11elseif ~isvector(b) || ~isreal(b) || ~all(isfinite(b))
12 error('b must be a real vector');
13elseif isempty(mu) || ~isscalar(mu) || ~isreal(mu) || ~isfinite(mu)
14 error('mu must be a real scalar');
15elseif isempty(order) || ~isscalar(order) || ~isreal(order) || ...
16 ~isfinite(order) || order < 0 || ...
17 abs(mod(order,floor(order))) > 0
18 error('order must be a positive integer');
19elseif isempty(beta) || ~isscalar(beta) || ~isreal(beta) || ...
20 ~isfinite(beta) || beta < 0 || beta > 1
21 error('beta must be a real scalar in [0,1]');
22elseif length(size(zp)) ~= 2 || ~isreal(zp) || ...
23 ~all(all(isfinite(zp)))
24 error('zp must be a real matrix');
25elseif ~isempty(mw1) && ...
26 (length(size(mw1)) ~= 2 || ~isreal(mw1) || ...
27 ~all(all(isfinite(mw1))))
28 error('mw1 must be a real matrix');
29elseif ~isempty(mcf) && ...
30 (~isreal(mcf) || length(size(mcf)) ~= 3 || ...
31 size(mcf,1) ~= order || ...
32 size(mcf,2) ~= size(z,2) || ...
33 ~all(all(all(isfinite(mcf)))))
34 error('mcf must be a real cubic matrix');
35elseif ~isempty(mcAdapt) && ...
36 (~isreal(mcAdapt) || ~all(all(isfinite(mcAdapt))))
37 error('mcAdapt must be a real matrix');
38elseif ~isempty(K) && ...
39 (~isscalar(K) || ~isreal(K) || ~isfinite(K) || K < 0)
40 error('K must be a real positive scalar');
41end
42
43
44
45if isempty(zp), zp = zeros(order, size(z,2)); end
46
47mcWall = zeros(order, size(z,2), length(b));
48
49
50y = zeros(size(b));
51if ~isempty(mw1)
52w = mw1; else w = zeros(order, size(z,2));
53end
54
55
56
57for n = 1:length(b)
58
59[zWin,y,w1]=targmc(zp,z,b,n,order,w,y);
60
61 if ~isempty(mcf), w = mcf(:,:,n); continue, end
62
63
64[w]=optwmc(zWin,n,w1,mcAdapt,mu,order,beta,z);
65
66[w]=NCAF(K,w,order,n,mcAdapt);
67
68mcWall(:,:,n) = w;
69end