How to insert a matrix into another matrix

3 visualizzazioni (ultimi 30 giorni)
Mallikarjuna
Mallikarjuna il 16 Dic 2013
Risposto: Azzi Abdelmalek il 23 Dic 2013
let
A = [1 2 3 4 5 6 7 8 9 10 11 12 ------1024]
B = [22 22 22]
I want to generate a matrix C which must have
[22 22 22 1 2 3 4 5 6 7 8 22 22 22 9 10 11 12 13 14 15 16 22 22 22 17 18 19-----1024 22 22 22]
In fact I have a huge data matrix and i want to frame the data by inserting a sync byte after every 1024 bytes
Thanks in advance

Risposte (4)

Walter Roberson
Walter Roberson il 16 Dic 2013
Modificato: Walter Roberson il 16 Dic 2013
insert_after = 8; %if after every 8 entries
T = reshape(A, insert_after, []);
C = [reshape( [repmat(B(:), 1, size(T, 2)); T], 1, []), B];
This assumes that your A matrix is an exact multiple of the number of entries after which you wish to insert B, and assumes that you want a B on each end of A.
See also the command "buffer" if you have the signal processing toolbox.

Abdullah Khan
Abdullah Khan il 16 Dic 2013
Modificato: Abdullah Khan il 16 Dic 2013
A = [1 2 3 4 5 6 7 8 9 10 11 12 ------1024]
B = [22 22 22]
Try
C= [A B A];

Andrei Bobrov
Andrei Bobrov il 16 Dic 2013
Modificato: Andrei Bobrov il 16 Dic 2013
A = 1:32;
n = 8;
s = numel(B);
B = [2 2 2 ];
C = 1:numel(A)/n*(n+s)+s;
rm = rem(C,n+s);
l = ismember(rm,1:3);
C(l) = B(rm(l));
C(~l) = A;

Azzi Abdelmalek
Azzi Abdelmalek il 23 Dic 2013
A = 1:38
B = [22 22 22]
n = 8;
m=numel(A);
idx2=unique([n:n:m m])
idx1=[1 idx2(1:end-1)+1]
out=[B cell2mat(arrayfun(@(ii,jj) [A(ii:jj) B],idx1,idx2,'un',0))]

Community Treasure Hunt

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

Start Hunting!

Translated by