matlab 矩阵最后一行,MATLAB:一个K×M的矩阵,第一列是1,其它都是0,从最后一行开始,每循环一次,最后一行的1往右边移一位,移动到末尾后溢出,重新回到最左边,同时上一行的1往右边移一位...

问题:一个K×M的矩阵,第一列是1,其它都是0,从最后一行开始,每循环一次,最后一行的1往右边移一位,移动到末尾后溢出,重新回到最左边,同时上一行的1往右边移一位。上一行溢出时,上上一行的1移动一位,以此类推,,直到第一列的1全部移动到最后一列停止。

编写工具:MATLAB R2015b 32位

代码:

function CyclicShift(input)

[lineNum,rowNum]=size(input);

counters=zeros(1,lineNum);

while(size(find(input(:,rowNum)==1),1)~=lineNum)

input=ElementShift(lineNum,input,rowNum);

counters(lineNum)=counters(lineNum)+1;

for iLine=lineNum:-1:2

flag=0;

if counters(iLine)==rowNum

flag=1;

counters(iLine)=0;

input=ElementShift(iLine-1,input,rowNum);

counters(iLine-1)=counters(iLine-1)+1;

end

if flag==0

break;

end

end

end

end

function B=ElementShift(lineID,B,M)

index=find(B(lineID,:)==1);

if index==M

B(lineID,index)=0;

B(lineID,1)=1;

else

B(lineID,index)=0;

B(lineID,index+1)=1;

end

end

未完 ......

点击访问原文(进入后根据右侧标签,快速定位到本文)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值