※ 引述《s4300026 (s4300026)》之铭言:
: syms unknown_variables;
: P=[];
: ss = length(X);
: for ii = 1:ss-1
: for jj = ii+1:ss
: P=[P;A(ii,:)*A(jj,:)'];
: end
: end
: solve(P)
: 最笨的做法~~~ 呼叫 celestialgod 补充~~~
不好意思
我试了很久
但是搞不出来
matlab 一直busy中跑不出结果...
以下是我的程式码
我用小维度的矩阵来测试就这样了
请求帮忙看一下有没有写错
谢谢
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
X = sym('X',[4,3]);%complex
P = [];
[sizeX, sizeY]=size(X);
sizE = 0;
while 1
G = [];
Y = ones(sizeX,sizeY);
%对于X的每个row向量 随机给定零元素
for i = 1:sizeX
r = randperm(sizeY);%sizeY个排序
sizE = sizeY-2;%零元素个数
b = r(1:sizE);%零元素位置
for j = 1:sizE
G = [G;X(i,b(j))==0];
Y(i,b(j)) = 0;
end
end
%不要产生出全零col向量
%借由Y来判定
breakflg = true;
for i = 1:sizeY
if ~any(Y(:,i))
breakflg = false;
break;
end
end
if breakflg
break;
end
end
P=[P;G];
%X'*X=I(identity matirx)
%等于0的部份
for i = 1:sizeY
for j = 1:sizeY
if i==j
continue;
end
P=[P;X(:,j)'*X(:,i)==0];
end
end
%等于1的部份
for i = 1:sizeY
P=[P;X(:,i)'*X(:,i)==1];
end
Z = solve(P,X);