필터 지우기
필터 지우기

I have a 300 x 150 zeros matrix and want to change only the lower triangular elements to 1, How do I do that?

조회 수: 14 (최근 30일)
Everything is in the title really, I need to change the lower triangular elements of this zeros matrix to 1, how can I do this easily?

채택된 답변

Image Analyst
Image Analyst 2017년 7월 3일
편집: Image Analyst 2024년 3월 17일
You don't even need your original zeros matrix (let's say you called your original matrix "z") since it gets completely overwritten by 0's and 1's.
Simply make a 300 x 150 matrix of zeros with the lower left triangle of 1's like this:
z = [zeros(150); tril(ones(150), 0)];
% Now verify and display it.
size(z)
ans = 1×2
300 150
imshow(z)
axis('on', 'image')

추가 답변 (3개)

KSSV
KSSV 2017년 7월 3일
편집: KSSV 2017년 7월 3일
idx = ones(300,150) ;
idx = tril(idx,1) ; % Make 1's at lower triangular part
A = rand(300,150) ; % given matrix
A(idx==1) = 1 ; % replace lower triangular part with 1

Jan
Jan 2017년 7월 3일
편집: Jan 2017년 7월 3일
In Matlb >= R2016b:
M = (1:300).' >= (1:150);
For older Matlab versions:
M = bsxfun(@ge, (1:300).', 1:150);

Abdurayimov Orzumurod
Abdurayimov Orzumurod 2024년 3월 17일
idx = bir (300,150);
idx = tril(idx,1) ; % Pastki uchburchak qismiga 1 qo'ying
A = rand (300,150); % berilgan matritsa
A(idx==1) = 1 ; % pastki uchburchak qismini 1 bilan almashtiring

카테고리

Help CenterFile Exchange에서 Matrix Indexing에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by