I have different sized vectors and an array to fill
A=[1,2,3,4];
B=[5,6];
C=[7,8,9];
ARRAY=zeros(5);
And I want to reach this:
OBJECTIVE =
1 2 3 4 0
5 6 0 0 0
7 8 9 0 0
0 0 0 0 0
0 0 0 0 0
Any idea? Also if there is any way to extend vectors to certain length I highly appreciate to know.

 채택된 답변

Stephen23
Stephen23 2019년 9월 5일
편집: Stephen23 2019년 9월 5일

1 개 추천

For an arbitrary number of vectors use a cell array, then looping is trivial:
>> D = {[1,2,3,4],[5,6],[7,8,9]};
>> M = zeros(5,5);
>> for k = 1:numel(D), M(k,1:numel(D{k})) = D{k}; end
>> M
M =
1 2 3 4 0
5 6 0 0 0
7 8 9 0 0
0 0 0 0 0
0 0 0 0 0

추가 답변 (3개)

the cyclist
the cyclist 2019년 9월 5일

3 개 추천

Here is one straightforward way:
A=[1,2,3,4];
B=[5,6];
C=[7,8,9];
ARRAY=zeros(5);
ARRAY(1,1:numel(A)) = A;
ARRAY(2,1:numel(B)) = B;
ARRAY(3,1:numel(C)) = C;
Diego R
Diego R 2019년 9월 5일

0 개 추천

Thank you both! I'd never had found this "numel" by myslef.
Jos (10584)
Jos (10584) 2019년 9월 5일

0 개 추천

A=[1,2,3,4];
B=[5,6];
C=[7,8,9];
[ARRAY, tf] = padcat(A,B,C) % pad with NaNs
ARRAY(~tf) = 0 % replace those NaNs with zeros
PADCAT concatenates vectors of unequal lengths by padding them with NaNs. It is available for free on the File Exchange

카테고리

도움말 센터 및 File Exchange에서 Creating and Concatenating Matrices에 대해 자세히 알아보기

질문:

2019년 9월 5일

댓글:

2022년 12월 26일

Community Treasure Hunt

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

Start Hunting!

Translated by