⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 subspace.m

📁 这是盲信号的代码 都已经通过编译了 做这方面的同仁可以参考一下 我觉得蛮惯用的
💻 M
字号:
function [Us,Ds,Un,Dn] = subspace(mixedsig)
%
%2005.12.5
if nargin == 0,
  error ('You must supply the mixed data as input argument.');
end

if length (size (mixedsig)) > 2,
  error ('Input data can not have more than two dimensions.');
end

if any (any (isnan (mixedsig))),
  error ('Input data contains NaN''s.');
end

meanValue = mean (mixedsig')';
mixedsig = mixedsig - meanValue * ones (1,size (mixedsig, 2));


[Dim, NumOfSampl] = size(mixedsig);
oldDimension = Dim;
%fprintf('Number of signals: %d\n', Dim);
%fprintf('Number of samples: %d\n', NumOfSampl);

covarianceMatrix = cov(mixedsig', 1);
[E, D] = eig (covarianceMatrix);
rankTolerance = 0.5;
maxLastEig = sum (diag (D) > rankTolerance);
lastEig = maxLastEig;
eigenvalues = flipud(sort(diag(D)));
Columns = diag(D) > rankTolerance;

%calculate Us
numTaken = 0;
for i = 1 : size (Columns, 1),
  if Columns(i, 1) == 1,
    takingMask(1, numTaken + 1) = i;
    numTaken = numTaken + 1;
  end
end
Us = E(:, takingMask);
%calculate Ds
numTaken = 0;
for i = 1 : size (Columns, 1),
  if Columns(i, 1) == 1,
    takingMask(1, numTaken + 1) = i;
    numTaken = numTaken + 1;
  end
end
Ds = D(takingMask, takingMask);
%calculate Un
numTaken = 0;
for i = 1 : size (Columns, 1),
  if Columns(i, 1) == 0,
    takingMask(1, numTaken + 1) = i;
    numTaken = numTaken + 1;
  end
end
Un = E(:, takingMask);
%calculate Dn
numTaken = 0;
for i = 1 : size (Columns, 1),
  if Columns(i, 1) == 0,
    takingMask(1, numTaken + 1) = i;
    numTaken = numTaken + 1;
  end
end
Dn = D(takingMask, takingMask);










⌨️ 快捷键说明

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