how to make the main diagonal of K are alternatively 2 and -2’s
Ältere Kommentare anzeigen
How to get alternative signs for the numbers on the diagonal of a matrix
2 Kommentare
John D'Errico
am 15 Feb. 2017
What have you tried? For example, a simple loop would suffice.
Or, you could get trickier, and use the diag function.
John D'Errico
am 15 Feb. 2017
Bearbeitet: John D'Errico
am 15 Feb. 2017
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
Antworten (2)
Image Analyst
am 15 Feb. 2017
One way, of many:
K = 2 * eye(5)
[rows, columns] = size(K)
K(1:2*rows+2:end) = -K(1:2*rows+2:end)
1 Kommentar
kingsley
am 15 Feb. 2017
John D'Errico
am 15 Feb. 2017
Bearbeitet: John D'Errico
am 15 Feb. 2017
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.
1 Kommentar
kingsley
am 16 Feb. 2017
Kategorien
Mehr zu Creating and Concatenating Matrices finden Sie in Hilfe-Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!