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

 Réponse acceptée

DGM
DGM le 6 Juin 2022
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 commentaires

Mako
Mako le 6 Juin 2022
How to inert matrix in loop?
Mako
Mako le 6 Juin 2022
And if I want to increase size 20X20?
DGM
DGM le 6 Juin 2022
Modifié(e) : DGM le 6 Juin 2022
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
Mako
Mako le 6 Juin 2022
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]
DGM
DGM le 6 Juin 2022
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.

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Loops and Conditional Statements dans Centre d'aide et File Exchange

Question posée :

le 6 Juin 2022

Commenté :

DGM
le 6 Juin 2022

Community Treasure Hunt

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

Start Hunting!

Translated by