求一个matlab非方阵的高斯消元函数

求一个matlab非方阵的高斯消元函数
求一个matlab非方阵的高斯消元函数,只做行变换,能处理行数大于列数的矩阵,不用求解


function x=agui_gauss(a,b)
%列主元高斯消去法解方程组ax=b
n=length(b);
a=[a,b];
for k=1:(n-1)
%选主元
    [ar,r]=max(abs(a(k:n,k)));
    r=r+k-1;
    if r>k
     t=a(k,:);a(k,:)=a(r,:);a(r,:)=t;
    end
    %消元
    a((k+1):n,(k+1):(n+1))=a((k+1):n,(k+1):(n+1))-a((k+1):n,k)/a(k,k)*a(k,(k+1):(n+1));a((k+1):n,k)=zeros(n-k,1);
    a
end
%回代
x=zeros(n,1);
x(n)=a(n,n+1)/a(n,n);
for k=n-1:-1:1
x(k,:)=(a(k,n+1)-a(k,(k+1):n)*x((k+1):n))/a(k,k);
end