I want to make an identity matrix

4 次查看(过去 30 天)
i want to make a matrix that look like this
How could i achieve this efficiently .Thanks in advace

回答(2 个)

the cyclist
the cyclist 2023-3-5
I've made some assumptions about the pattern, but I expect it is what you want.
This should be highly efficient. The algorithm is a bit obfuscated.
% Input
N = 4;
% Start with all 0s
M = zeros(N,N*(N+1));
% Fill in the 1s
M(1:N*N+1:end-N*N) = 1;
% Fill in the -1s
M(:,N*N+1) = -1;
% Display the result
disp(M)
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 -1 0 0 0

John D'Errico
John D'Errico 2023-3-5
编辑:John D'Errico 2023-3-5
These are starting to look like homework questions.
Did you not read the answer to the last question you asked? You could not use that idea to build this matrix?
A = kron([eye(4),zeros(4,1)],[1 0 0 0])
A = 4×20
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0
That gets you almost there, with the first 16 columns correct, and a total of 20 columns. Then it would be simple enough to stuff in the -1 elements in column 17.
A(:,17) = -1
A = 4×20
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 -1 0 0 0
spy(A)

类别

Help CenterFile Exchange 中查找有关 Resizing and Reshaping Matrices 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by