MATLAB에서 벡터를 기반으로 삼각형 매트릭스를 어떻게 만들려면?

StackOverflow https://stackoverflow.com/questions/1000535

  •  05-07-2019
  •  | 
  •  

문제

이와 같은 벡터가 있다고 가정 해 봅시다.

A = [101:105]

정말 :

[ 101, 102, 103, 104, 105 ]

그리고 매트릭스를 생성하기 위해 벡터/매트릭스 기능 및 연산자 만 사용하고 싶습니다.

101 102 103 104 105
102 103 104 105 0
103 104 105 0   0
104 105 0   0   0
105 0   0   0   0

또는 다음 행렬 :

101 102 103 104 105
0   101 102 103 104
0   0   101 102 103
0   0   0   101 102
0   0   0   0   101

누군가 아이디어가 있습니까?

(나는 Matlab에서 매우 초보자이지만, 나는이 물건을 슬프게했다 ...)

도움이 되었습니까?

해결책

hankel(A) 첫 번째 매트릭스를 얻을 수 있습니다

triu(toeplitz(A)) 두 번째로 얻을 것입니다.

-로든

다른 팁

최상의 솔루션은 다음과 같습니다 로렌. 이 행렬을 사용하여 만들 수도 있습니다 spdiags:

vec = 101:105;
A = full(spdiags(repmat(vec,5,1),0:4,5,5));  % The second matrix
B = fliplr(full(spdiags(repmat(fliplr(vec),5,1),0:4,5,5)));  % The first matrix

Loren이 언급 한 내장 기능에 대해 알게되기 전에 이와 같은 밴드 매트릭스를 만드는 것을 기억합니다. 그것들을 사용하는 것만 큼 단순하고 깨끗하지는 않지만 효과가있었습니다. =))

내가 갈 방법은 매트릭스를 만드는 것입니다 A:

101 102 103 104 105
101 102 103 104 105
101 102 103 104 105
101 102 103 104 105
101 102 103 104 105

그런 다음 행렬을 찾으십시오 B 당신이 곱할 때 A*B 원하는 결과를 얻을 수 있습니다. 기본적으로 먼저 종이에 선형 대수를 수행 한 다음 Matlab이 계산을하도록합니다.

이러한 정기적 인 패턴으로 이러한 삼각형 행렬을 생성하려면 Toeplitz 함수를 사용하십시오.

m=toeplitz([1,0,0,0],[1,2,3,4])

다른 경우에는 사용됩니다 rot90(m)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top