Matlab--rref函数的糟蹋

%老师要求做一个函数
%此函数功能与rref函数功能一样
%查看了matlab内嵌的rref代码,简单!
%这里用常见逻辑加嵌套等去完成这个功能
%存在一定的缺点
function fun=easy3(x)
a=size(x,1);
b=size(x,2);
flag=0;
flbg=1;
kk=1;
while kk<=a
    nn = kk;
    if flbg==0   %当非第一个元素的右下对角线元素其中一个为0的时候 列号应加1
        nn=nn+1;
    end
    min=1000;    %每一趟结束后初始化为1000
for ii=kk:a
    if flag==1 && nn+1<=b
        nn=nn+1;
        flbg=0;
        flag=0;
    end
     if nn<=b && x(ii,nn)<min && x(ii,nn)~=0  %x(1,1)不要0
         min=x(ii,nn);  %找出一行中首元素的最小值
         jj=ii;   %记录横坐标
        mm=nn;   %记录纵坐标
     end
end

    if  min==1000  %一行中全为0的情况
        if kk==a    %如果到了最后一行 而且‘那个’元素为0
            break;
        end
        flag=1;    %标记
        continue;
    else
    x([kk,jj],:)=x([jj,kk],:);  %行与行交换
    x(kk,:)=x(kk,:)/x(kk,mm);   %把此行第一个非零元素变为1
    end
    if kk+1<=a                    %判断是否为1——(a-1)行
        for ii=(kk+1):a                 %向下相加减
            x(ii,:)=x(ii,:) - x(ii,mm)*x(kk,:);
        end
    end
    if kk-1>=1                    %判断是否为2——a行
        for ii=(kk-1):-1:1               %向上相加减
            x(ii,:)=x(ii,:) - x(ii,mm)*x(kk,:);
         end
    end
    kk=kk+1;
end
fun = x;


%还望朋友们帮忙验证一下,若有漏解的情况,麻烦告知一下,或者有不对的地方也可指出,谢谢。
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值