Turli uzunlikdagi vektorlarni birlashtir

MATLABda vektorlarni birlashtira olmayman.

A = [1
     2
     3]

B = [6
     7
     8
     9
     10]

Desired result:

C = [1
     2
     3
     6 
     7                
     8
     9
     10]

bu erda A va B ning o'lchamlari buyruq faylimning har bir yinelemida har xil va men birlashtirilgan natijaga ega vektorni yaratmoqchiman, C dinamik hajmi.

Men shuni sinab ko'rdim:

matlab snapshot

0
Vektor yo'nalishidagi vertcat yoki horzcat
qo'shib qo'ydi muallif GameOfThrows, manba
Vektor yo'nalishidagi vertcat yoki horzcat
qo'shib qo'ydi muallif GameOfThrows, manba
Siz nima qildingiz?
qo'shib qo'ydi muallif Jørgen, manba

6 javoblar

A = [1
     2
     3];

B = [6
     7
     8
     9
     10];

Vertical concatenation of two vectors/matrices is what you want, done like this...

C = [A; B]; 

... yoki bu ...

C = [A
     B];

... yoki bu ...

C = vertcat(A,B);

Ularning uchtasi ham beradi

C = [1
     2
     3
     6
     7 
     8
     9
     10]

% As you requested...

You were running into trouble because you were trying to use horzcat

C = horzcat(A',B');

Horizontal concatenation merges matrices horizontally, i.e.

C = [1, 6
     2, 7
     3, 8
     ?, 9
     ?, 10]

Buning oldini olish uchun siz matritsalarni transpozitsiya qildingiz, buning o'rniga ular ustunlar o'rniga satrlar qo'yishdi, keyin natijani qaytarishdi? Sizga vertcat kerak! Buning uchun stenografni va to'liq shaklni ko'rsatdim.

2
qo'shib qo'ydi
@PreetiSingh, iltimos, savolning yuqori chap burchagidagi yashil/oq belgini bosish orqali uni "qabul" deb belgilang :)
qo'shib qo'ydi muallif Wolfie, manba
Ushbu xabarni almashish uchun ortiqx. Javobingiz foydali.
qo'shib qo'ydi muallif Preeti Singh, manba
A = [1
     2
     3];

B = [6
     7
     8
     9
     10];

Vertical concatenation of two vectors/matrices is what you want, done like this...

C = [A; B]; 

... yoki bu ...

C = [A
     B];

... yoki bu ...

C = vertcat(A,B);

Ularning uchtasi ham beradi

C = [1
     2
     3
     6
     7 
     8
     9
     10]

% As you requested...

You were running into trouble because you were trying to use horzcat

C = horzcat(A',B');

Horizontal concatenation merges matrices horizontally, i.e.

C = [1, 6
     2, 7
     3, 8
     ?, 9
     ?, 10]

Buning oldini olish uchun siz matritsalarni transpozitsiya qildingiz, buning o'rniga ular ustunlar o'rniga satrlar qo'yishdi, keyin natijani qaytarishdi? Sizga vertcat kerak! Buning uchun stenografni va to'liq shaklni ko'rsatdim.

2
qo'shib qo'ydi
@PreetiSingh, iltimos, savolning yuqori chap burchagidagi yashil/oq belgini bosish orqali uni "qabul" deb belgilang :)
qo'shib qo'ydi muallif Wolfie, manba
Ushbu xabarni almashish uchun ortiqx. Javobingiz foydali.
qo'shib qo'ydi muallif Preeti Singh, manba

Aqlsiz usul shunday:

C = [A(:);B(:)];

Agar bu usuldan foydalansangiz, A va B satr vektorlari, ustun vektorlari yoki hatto matritslarmi, ahamiyatsiz.

0
qo'shib qo'ydi
Siz to'g'ri deb bilsangiz, har doim buni ishlatish uchun xavfli bo'lishi mumkin. Keyinchalik murakkab dasturlarda ko'r-ko'rona ishlatish, matritsangizning o'lchamlarini mutlaqo buzishi mumkin! Ehtimol, yaxshiroq tushunish uchun usulingiz bilan nima yuz berayotgani haqida batafsil ma'lumot olish mumkin :)
qo'shib qo'ydi muallif Wolfie, manba
Ushbu xabarni almashish uchun ortiqx. Javobingiz foydali.
qo'shib qo'ydi muallif Preeti Singh, manba

Aqlsiz usul shunday:

C = [A(:);B(:)];

Agar bu usuldan foydalansangiz, A va B satr vektorlari, ustun vektorlari yoki hatto matritslarmi, ahamiyatsiz.

0
qo'shib qo'ydi
Siz to'g'ri deb bilsangiz, har doim buni ishlatish uchun xavfli bo'lishi mumkin. Keyinchalik murakkab dasturlarda ko'r-ko'rona ishlatish, matritsangizning o'lchamlarini mutlaqo buzishi mumkin! Ehtimol, yaxshiroq tushunish uchun usulingiz bilan nima yuz berayotgani haqida batafsil ma'lumot olish mumkin :)
qo'shib qo'ydi muallif Wolfie, manba
Ushbu xabarni almashish uchun ortiqx. Javobingiz foydali.
qo'shib qo'ydi muallif Preeti Singh, manba

Sinash:

A = [1 2 3];
B = [4 5 6 7 8 9 10];

C = [A B]

A 'va B' vertikal vektorlari uchun:

C = [A;B]
0
qo'shib qo'ydi
Ushbu xabarni almashish uchun ortiqx. Javobingiz foydali.
qo'shib qo'ydi muallif Preeti Singh, manba

Sinash:

A = [1 2 3];
B = [4 5 6 7 8 9 10];

C = [A B]

A 'va B' vertikal vektorlari uchun:

C = [A;B]
0
qo'shib qo'ydi
Ushbu xabarni almashish uchun ortiqx. Javobingiz foydali.
qo'shib qo'ydi muallif Preeti Singh, manba