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

3 ビュー (過去 30 日間)
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.

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

採用された回答

Guillaume
Guillaume 2019 年 10 月 16 日
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.
Guillaume
Guillaume 2019 年 10 月 16 日
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 件)

カテゴリ

Help Center および File ExchangeTables についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by