Can someone check my code ?
조회 수: 1 (최근 30일)
이전 댓글 표시
Hello!
I have a binary matrix A (m*n),in each row i want to keep arbitrary just '1' in order to get sum in each row ="1"
at first i selected the last non zero value in each row with this code :
[rows, columns] = size(A)
% Create an array to keep track of the column of the last 1 in each row.
lastNonZeroColumn = zeros(rows, 1);
% Loop over rows, finding the last 1 in each row.
for row = 1 : rows
% Find the last 1 in this row, if any exist.
col = find(A(row, :), 1, 'last');
if ~isempty(col)
% At least one 1 exists. Log it's location.
lastNonZeroColumn(row) = col;
end
end
% Display results in command window:
lastNonZeroColumn
after this i picked out just '1' except the last non zero value, i used this code :
N=zeros(size(A);
for k=1:size(A,1)
index=find(A(k,1:lastNonZeroColumn(i)-1));
if isempty(index),continue;end
select=randperm(length(index),1);
N(k,index(select))=1;
end
but i still get '1' at the position of last non zero value.
can anyone help me please!
thanks in advance.
댓글 수: 4
Walter Roberson
2022년 9월 15일
(Not relevant to this question, but in order to get this message through to the poster who deleted a question earlier:)
With regards to the summation you asked about:
R in your equation appears to be a fixed value. You are adding the fixed value together T times,
R %t = 1 to 1
R+R = 2*R %t = 1 to 2
R+R+R = 3*R %t = 1 to 3
and so on.
And you are wanting to compare that matrix sum to the scalar value k.
- if k is 0 then D = 0, since sum t=1:0 of something is 0 as no elements would be added
- if k is > 0 and any R>0 then D = ceil(max(R(:))/k)
- if k is negative then D = 0 since as we showed above the empty sum is 0 and negative < 0
- if k is > 0 and all R<=0 then there is no solution
The analysis would be quite different if the equation were
and it would be different again if it were something like ![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1126580/image.png)
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1126575/image.png)
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1126580/image.png)
채택된 답변
Torsten
2022년 9월 11일
이동: Cris LaPierre
2022년 9월 11일
That's exactly what your code does in my opinion.
Or give an example where it does not perform as you described it should.
Found a mistake in your code:
index=find(A(k,1:lastNonZeroColumn(i)-1));
should of course be
index=find(A(k,1:lastNonZeroColumn(k)-1));
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Logical에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!