how to develop n order matrix?
Ältere Kommentare anzeigen
i wish to make a matrix of nth order fromm K=[2000,-1000,0,0;-1000,2000,-1000,0;0,-1000,2000,-1000;0,0,-1000,1000; so on to nth order]
can anyone please help me with this ...
3 Kommentare
The explanation is not clear yet. What do you call "n.th order"?
It is getting a liitle bit easier to guess, if you post the matrix in 2D:
K = [2000, -1000, 0, 0; ...
-1000, 2000, -1000, 0; ...
0, -1000, 2000, -1000; ...
0, 0, -1000, 1000;
But why is the last element 1000 and not 2000?
Jasneet Singh
am 19 Mär. 2021
Bearbeitet: Jan
am 19 Mär. 2021
K=[2000,-1000,0,0;-1000,2000,-1000,0;0,-1000,2000,-1000;0,0,-1000,1000]
Antworten (2)
With some guessing: You want a tridiagonal matrix with the right bottom element changed. Then:
n = 4;
K = diag(repmat(2000, 1, n)) + ...
diag(repmat(-1000, 1, n-1), 1) + ...
diag(repmat(-1000, 1, n-1), -1)
or
K = zeros(n, n);
nn = n * n;
n1 = n + 1;
K( 1:n1:nn) = 2000;
K(n1:n1:nn) = -1000;
K( 2:n1:nn-n) = -1000;
or
K = toeplitz([2000, -1000, zeros(1, n - 2)])
or
K = full(gallery('tridiag', n, -1000, 2000, -1000))
or
K = conv2(eye(n), [-1000, 2000, -1000], 'same')
any finally:
K(n, n) = 1000;
Or directly:
K = diag([repmat(2000, 1, n - 1), 1000]) + ... % Last element adjusted
diag(repmat(-1000, 1, n - 1), 1) + ...
diag(repmat(-1000, 1, n - 1), -1)
7 Kommentare
Jasneet Singh
am 19 Mär. 2021
Jasneet Singh
am 19 Mär. 2021
In your case it helps to recognize, that you want almost a "tridiagonal matrix". Then asking an internet search engine for "Matlab tridiagonal" finds matching code snippets. But if you do not know the term "tridiagonal", it is really hard to find matching keywpord. Then asking here in the forum is a very good method to let others find the keywords and to learn MATLAB. This is the purpose of this forum.
Jasneet Singh
am 22 Mär. 2021
Jasneet Singh
am 22 Mär. 2021
Jan
am 22 Mär. 2021
This is a new question. Please post it as a new thread.
n = 7;
MD = 2000*ones(1,n);
SD = -1000*ones(1,n-1);
K = diag(MD) + diag(SD,1) + diag(SD,-1)
Or:
n = 7;
K = zeros(n,7);
K(1:n+1:end) = 2000;
K(2:n+1:end) = -1000;
K(n+1:n+1:end) = -1000;
K
Kategorien
Mehr zu Matrix Indexing 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!