How to create a new table array combining the values every n,th element from two different table arrays

I have two table arrays with a big number of rows and one column each. Each array has a different size. I would like to add the values from the second array into the first so that every n values of A the same number of values of B are added to create a new table array C.
For example:
Given a matrix A=[2,5,7,9,11,13,15,17,19,21] and a matrix B= [1,1,1,1,1,1,3,3,3,3,3,3,4,4,4,4,4,6,6,6,6,6,6]
I would like to create a new matrix C = [2,5,1,1,1,1,1,7,9,3,3,3,3,3,3,11,13,4,4,4,4,4,15,17,6,6,6,6,6,6,19,21]
In this case every 2 values of A, 5 consecutive values from B are added.
In my case I would like to add every 60 values of A to add 59 consecutive values of B. The length of A is 2008x60= 120480 rows and B is 2008x59= 118472 rows.

2 件のコメント

Guillaume
Guillaume 2019 年 10 月 16 日
Your example has alternatively 5 or 6 values from B added. That doesn't match your description.
Note that tables and arrays are two different things.
Danae Parissi
Danae Parissi 2019 年 10 月 16 日
編集済み: Danae Parissi 2019 年 10 月 16 日
I am sorry for the typo, the number of values that are added from B are contantly 49.
Also they are all table arrays.

サインインしてコメントする。

 採用された回答

In my case I would like to add every 60 values of A to add 59 consecutive values of B
So, assuming that A and B are indeed vectors
C = reshape([reshape(A, 59, []); reshape(B, 60, [])], 1, [])
Basically, reshape A in columns of 59 rows, reshape B in columns of 60 rows, concatenate the two matrices vertically and reshape back into a vector.

2 件のコメント

Danae Parissi
Danae Parissi 2019 年 10 月 16 日
編集済み: Danae Parissi 2019 年 10 月 16 日
Thank you very much it works. Would you also know how to add 3 table arrays in a similar fashion?
I am simply doing what you showed me in sequence but I was wondering if there were something more elegant.
Again, a table array is not a thing. A table is a completely different thing from an array.
If the 3 arrays to interlace are separate variables, it's the same principle:
reshape([reshape(A, Astride, []); ... where Astride is 59 in your example
reshape(B, Bstride, []); ... where Bstride is 60 in your example
reshape(C, Cstride, [])], ...
1, [])
If the arrays are stored in a cell array instead, there are simpler ways.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeTables についてさらに検索

タグ

質問済み:

2019 年 10 月 16 日

コメント済み:

2019 年 10 月 16 日

Community Treasure Hunt

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

Start Hunting!

Translated by