How to write a diagonal rectangular matrix

조회 수: 17 (최근 30일)
Leonardo
Leonardo 2023년 11월 23일
댓글: Dyuman Joshi 2023년 11월 23일
I have to insert on matlab this matrix:
n = 100;
A = diag(21*ones(n,1)) + diag(-4*ones(n-1,1),-1)...
+ diag(-20*ones(n-1,1),1) + diag(ones(n-2,1),-2)...
+ diag(2*ones(n-2,1), 2);
I can generate it when it is squared, but now the exercise tells me to use the same numbers in a rectangular matrix having dimensions 100x98: how do I create the new matrix?

채택된 답변

Chunru
Chunru 2023년 11월 23일
편집: Chunru 2023년 11월 23일
You can use toeplitz function.
% Smaller n, m here
n = 10;
m = 8;
A = diag(21*ones(n,1)) + diag(-4*ones(n-1,1),-1)...
+ diag(-20*ones(n-1,1),1) + diag(ones(n-2,1),-2)...
+ diag(2*ones(n-2,1), 2);
whos
Name Size Bytes Class Attributes A 10x10 800 double cmdout 1x33 66 char m 1x1 8 double n 1x1 8 double
A
A = 10×10
21 -20 2 0 0 0 0 0 0 0 -4 21 -20 2 0 0 0 0 0 0 1 -4 21 -20 2 0 0 0 0 0 0 1 -4 21 -20 2 0 0 0 0 0 0 1 -4 21 -20 2 0 0 0 0 0 0 1 -4 21 -20 2 0 0 0 0 0 0 1 -4 21 -20 2 0 0 0 0 0 0 1 -4 21 -20 2 0 0 0 0 0 0 1 -4 21 -20 0 0 0 0 0 0 0 1 -4 21
c = zeros(n, 1); c(1:3)=[21 -4 1]; % 1st column
r = zeros(m, 1); r(1:3)=[21 -20 2]; % 1st row
B = toeplitz(c, r)
B = 10×8
21 -20 2 0 0 0 0 0 -4 21 -20 2 0 0 0 0 1 -4 21 -20 2 0 0 0 0 1 -4 21 -20 2 0 0 0 0 1 -4 21 -20 2 0 0 0 0 1 -4 21 -20 2 0 0 0 0 1 -4 21 -20 0 0 0 0 0 1 -4 21 0 0 0 0 0 0 1 -4 0 0 0 0 0 0 0 1
  댓글 수: 3
Leonardo
Leonardo 2023년 11월 23일
How can I remove the last two columns easily? @Dyuman Joshi
Dyuman Joshi
Dyuman Joshi 2023년 11월 23일
% Smaller n, m here
n = 10;
m = 8;
A = diag(21*ones(n,1)) + diag(-4*ones(n-1,1),-1)...
+ diag(-20*ones(n-1,1),1) + diag(ones(n-2,1),-2)...
+ diag(2*ones(n-2,1), 2)
A = 10×10
21 -20 2 0 0 0 0 0 0 0 -4 21 -20 2 0 0 0 0 0 0 1 -4 21 -20 2 0 0 0 0 0 0 1 -4 21 -20 2 0 0 0 0 0 0 1 -4 21 -20 2 0 0 0 0 0 0 1 -4 21 -20 2 0 0 0 0 0 0 1 -4 21 -20 2 0 0 0 0 0 0 1 -4 21 -20 2 0 0 0 0 0 0 1 -4 21 -20 0 0 0 0 0 0 0 1 -4 21
%Remove the last n-m columns
A(:,end-(1:n-m)) = []
A = 10×8
21 -20 2 0 0 0 0 0 -4 21 -20 2 0 0 0 0 1 -4 21 -20 2 0 0 0 0 1 -4 21 -20 2 0 0 0 0 1 -4 21 -20 2 0 0 0 0 1 -4 21 -20 0 0 0 0 0 1 -4 21 0 0 0 0 0 0 1 -4 2 0 0 0 0 0 0 1 -20 0 0 0 0 0 0 0 21

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

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Time Series에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by