generate matrix by for loop

A=[1 -10 4
0 -2 7
5 1 9]
I need to get
A=[1 0 -10 0 4
0 0 -2 0 7
5 0 1 0 9]
by for loop

 Accepted Answer

Don't need a loop.
A = [1 -10 4
0 -2 7
5 1 9];
B = zeros(size(A,1),2*size(A,2)-1); % allocate
B(:,1:2:end) = A % fill in nonzero columns
B = 3×5
1 0 -10 0 4 0 0 -2 0 7 5 0 1 0 9

5 Comments

How to inert matrix in loop?
And if I want to increase size 20X20?
The above code doesn't depend on the size of A. A can be any 2D array.
A loop is not necessary. If you want to use a loop anyway, you can preallocate the output array and assign data columnwise.
A = [1 -10 4
0 -2 7
5 1 9];
B = zeros(size(A,1),2*size(A,2)-1); % allocate
cv = 1:2:size(B,2); % column indices of the output array
for c = 1:size(A,2)
B(:,cv(c)) = A(:,c); % fill in nonzero columns
end
B
B = 3×5
1 0 -10 0 4 0 0 -2 0 7 5 0 1 0 9
Sorry, I may have asked the wrong question above.
If matrix size is:
A=[1 0 -10 0 4 0 1 0 -10 0 4 0
0 0 -2 0 7 0 0 0 -2 0 7 0
5 0 1 0 9 0 5 0 1 0 9 0
1 0 -10 0 4 0 1 0 -10 0 4 0
0 0 -2 0 7 0 0 0 -2 0 7 0
5 0 1 0 9 0 5 0 1 0 9 0]
Either answer will zero-pad columns regardless of the size or contents of A.
If you're trying to describe a particular generalized relationship between input and output, you'll have to clarify with both inputs and outputs for your example.

Sign in to comment.

More Answers (0)

Categories

Find more on Loops and Conditional Statements in Help Center and File Exchange

Asked:

on 6 Jun 2022

Commented:

DGM
on 6 Jun 2022

Community Treasure Hunt

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

Start Hunting!