Matlab gfrank()函数返回错误的等级

时间:2015-02-02 17:54:04

标签: matlab matrix

matlab中的函数gfrank(A,p)应该返回GF(p)中矩阵A的秩,其中p是素数。

但似乎这个功能有问题。因为它为某些矩阵返回了不可能的值。

例如10 * 9矩阵:

 0     1     1     1     1     0     1     0     0
 1     0     0     1     0     1     0     1     1
 0     1     1     0     1     1     1     0     0
 0     1     1     0     1     1     1     0     1
 0     1     0     0     0     0     0     0     1
 0     0     0     0     1     0     0     1     0
 0     0     0     0     0     0     0     1     0
 0     0     0     1     0     0     0     1     1
 0     1     0     1     0     1     0     1     0
 0     1     1     1     1     0     0     1     1

在GF(29)中,函数返回10,这是不可能的,因为它大于其中一个维度。

使用此代码找到了示例:

M = 10;
pP = [];
Y =[];
for P = 19:100
    if isprime(P)
        P
        pause(3)
        for i = 1:100
            A=round(rand(M,M-1));
            pP = [pP,P];
            if(gfrank(A,P) > M-1)       % A IS AN (M-1)*M MATRIX.
                disp(A);                % IF RANK OF A IS GREATER THAN OR 
                disp(gfrank(A,P));      % EQUAL TO M, WE HAVE AN ERROR!
            end
        end
    end
end

0 个答案:

没有答案