Creating a non-square diagonal matrix

37 views (last 30 days)
Nikan Fakhari
Nikan Fakhari on 17 Dec 2020
Commented: Nikan Fakhari on 17 Dec 2020
Hi there,
I have a vector A that contains 2240 elements and I wanted to create a non-square diagonal matrix out if (B) that has the following dim: (94,037,2240),
I cant really use the diag function in matlab beause that gives me a square diagonal matrix,
Could you please help me with this issue?
  5 Comments
James Tursa
James Tursa on 17 Dec 2020
OK, 94037x2240. But what is the rule?

Sign in to comment.

Answers (2)

Bruno Luong
Bruno Luong on 17 Dec 2020
B = diag(A(:));
B(94037,1) = 0;

Jan
Jan on 17 Dec 2020
Edited: Jan on 17 Dec 2020
s1 = 94037;
s2 = 2240;
v = rand(1, s2); % Test data
M = zeros(s1, s2);
M(1:s1+1:s1*s2) = v; % Linear indexing
Or if s2 > s1:
s1 = 2;
s2 = 4;
v = rand(1, s1); % Test data
M = zeros(s1, s2);
M(1:s1+1:s1*s1) = v; % Linear indexing

Categories

Find more on Operating on Diagonal Matrices in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!