how to make the main diagonal of K are alternatively 2 and -2’s

조회 수: 1 (최근 30일)
kingsley
kingsley 2017년 2월 15일
댓글: kingsley 2017년 2월 16일
How to get alternative signs for the numbers on the diagonal of a matrix
  댓글 수: 2
John D'Errico
John D'Errico 2017년 2월 15일
What have you tried? For example, a simple loop would suffice.
Or, you could get trickier, and use the diag function.
John D'Errico
John D'Errico 2017년 2월 15일
편집: John D'Errico 2017년 2월 15일
Please don't add new questions just to add additional information to an existing question. I have moved the separate question by this individual into a comment:
I want to create a matrix that the main diagonal of K are alternatively 2 and -2’s, the sub- and sup-diagonal of K alternatively 1 and -1’s, and everywhere else 0. The size of K is 2n by 2n.
Here is what I got so far.
x=ones(1,5);
y=ones(1,4);
x2=2*x;
y2=y*-1;
z=diag(x2,0)+diag(y2,+1)
d=diag(y2,-1)
g=z+d

댓글을 달려면 로그인하십시오.

답변 (2개)

Image Analyst
Image Analyst 2017년 2월 15일
One way, of many:
K = 2 * eye(5)
[rows, columns] = size(K)
K(1:2*rows+2:end) = -K(1:2*rows+2:end)

John D'Errico
John D'Errico 2017년 2월 15일
편집: John D'Errico 2017년 2월 15일
So you want to create a tridiagonal matrix, with the main diagonal alternating +/- 2, and the sub and super diagonals alternating +/- 1?
n = 5;
k = mod(1:n,2)*2 - 1;
A = diag(k*2) + diag(k(1:n-1),-1) + diag(k(1:n-1),1)
A =
2 1 0 0 0
1 -2 -1 0 0
0 -1 2 1 0
0 0 1 -2 -1
0 0 0 -1 2
A loop would have been nearly as easy, but not really necessary if you know the tools in MATLAB.
The best solution (IMHO) is to use spdiags.

카테고리

Help CenterFile Exchange에서 Operating on Diagonal Matrices에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by