求解答 找每行的第一个和最后一个非零数 用matlab实现 很简单的一段代码 但是就是没有头绪
记得要考虑全是0的情况!!!
A=[0,0,5,3,5,7;
2,3,0,5,7,8;
0,0,0,0,0,0;
0,0,0,9,8,0;
0,0,0,1,0,0 ];
LogicA=(A~=0);
%第几行_左边最大数位置_左边最大数值_右边最大数位置_右边最大数值
Row_FirstPos_Value_LastPos_Value=[];
[rownum,colnum]=size(A);
for i=1:1:rownum
temprow = A(i,:);
temprowLogi =LogicA(i,:);
tempJudge=any(temprowLogi);
if(tempJudge==0) %全都是0
Row_FirstPos_Value_LastPos_Value=[Row_FirstPos_Value_LastPos_Value;[i,nan,nan,nan,nan]];
else %不全是0
%从左往右 在逻辑矩阵找最大的1和位置
[valueNeglect,posi1] = max(temprowLogi);
%从左往右 最大的值
value1 = temprow(posi1);
%
temprowLogi=fliplr(temprowLogi);
%从右往左 在逻辑矩阵找最大的1和位置
[valueNeglect,posi2] = max(temprowLogi);
posi2 = colnum+1-posi2;
%从右往左 最大的值
value2 = temprow(posi2);
Row_FirstPos_Value_LastPos_Value=[Row_FirstPos_Value_LastPos_Value;[i,posi1,value1,posi2,value2]];
end
end
循环读取矩阵中每行的第一个和最后一个数据,然后进行判断,并输出相应的位置。