Is there a way to vectorize the definition of this matrix ?
조회 수: 1 (최근 30일)
이전 댓글 표시
I am defining the matrix z this way :
z=zeros(n,m);
for i=1:n
for j=1:m
z(i,j)= i==y(j);
end
end
where y is a vector of size m. Is there a better way to write this ? (one line maybe)
댓글 수: 0
채택된 답변
Turlough Hughes
2019년 12월 14일
편집: Turlough Hughes
2019년 12월 15일
Here's one way to do it in one line:
z = y.*ones(n,m)==(1:n).'.*ones(n,m);
I tested with the following inputs:
y=1:10;
n=5; m=length(y);
z = y.*ones(n,m)==(1:n).'.*ones(n,m);
edit: following stephens comment.
댓글 수: 2
Stephen23
2019년 12월 15일
Note that square brackets are a concatentation operator, and should be replaced with grouping parentheses (exactly as the hint in the MATLAB editor also tells you):
(1:n)
It is a good habit to use transpose instead of conjugate transpose (unless you really need the conjugate transpose):
(1:n).'
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Creating and Concatenating Matrices에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!