www.pudn.com > WebsiteCode.zip > randorient.m, change:2008-07-24,size:1658b

```function Bstar = randorient(k, p, xi)
% Generates a random orientation for a screening matrix
%
% Inputs:
%       k - number of design variables
%       p - number of discreet levels along each dimension
%       xi- elementery effect step length factor
%
% Output:
%       Bstar - random orientation matrix
%
%
% This program is free software: you can redistribute it and/or modify  it
% the Free Software Foundation, either version 3 of the License, or any
% later version.
%
% This program is distributed in the hope that it will be useful, but
% WITHOUT ANY WARRANTY; without even the implied warranty of
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser
% General Public License for more details.
%
% You should have received a copy of the GNU General Public License and GNU
% Lesser General Public License along with this program. If not, see

% Step length
Delta = xi/(p-1);

m = k + 1;

% A truncated p-level grid in one dimension
xs = (0:1/(p-1):1-Delta);
xsl = length(xs);

% Basic sampling matrix
B = [zeros(1,k); tril(ones(k))];

% Randomization

% Matrix with +1s and -1s on the diagonal with equal probability
Dstar = diag(2*round(rand(1,k))-1);

% Random base value
xstar = xs(floor(rand(1,k)*xsl)+1);

% Permutation matrix
Pstar = zeros(k);
rp = randperm(k);
for i=1:k, Pstar(i,rp(i))=1; end

% A random orientation of the sampling matrix
Bstar = (ones(m,1)*xstar+(Delta/2)*...
((2*B-ones(m,k))*Dstar+ones(m,k)))*Pstar;```