※ 引述《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);