Error when combine tables vertically under some circumstances

I have two sets of data, up_data and upt_data. They have the same variable names. But when I try to use [up_data; upt_data] to combine them, error pops out as following:
An error occurred when concatenating the table variable 'posture' using VERTCAT.
Caused by:
Error using vertcat
Dimensions of arrays being concatenated are not consistent.
Here is a test to show that the variable names are the same.
However, when I write them into csv files and then read them back as follows:
writetable(up_data, 'up_data.csv');
writetable(upt_data, 'upt_data.csv');
up_data = readtable('up_data.csv');
upt_data = readtable('upt_data.csv');
upright_alldata = [up_data ; upt_data];
It works perfectly well. I wonder what went wrong. I attached the csv files as well for your references.

5 Commenti

I didn't get an error using your concatenation code:
T1 = readtable('https://www.mathworks.com/matlabcentral/answers/uploaded_files/645930/up_data.csv');
T2 = readtable('https://www.mathworks.com/matlabcentral/answers/uploaded_files/645935/upt_data.csv');
T3 = [T1; T2];
That's what I said, when I read from the csv files, it works fine. But I run the code with the original data that I used to write the table, the error pops out. : (
It would appear the data you need to share is the original up_data and upt_data variables, not the csv files. You can save them to a mat file and attach them to your post.
In the meantime, what is the size of posture in your tables?
sUP = size(up_data.posture)
sUPT = size(upt_data.posture)
I suggest you provide an example minimal set of MATLAB statements that generates the error you are seeing. Furthermore, to make things easier for someone trying to help you, it's best to do this by embedding the code directly in your question or comment
Thank you for your kind suggestions. I will post them in the question.

Accedi per commentare.

 Risposta accettata

I've edited your post to run your data and display the underlying issue.
You use char arrays to create posture. To combine char arrays, they must have the same number of characters. However, in one table you use 'upright' and in the other you use 'upright_t'.
The simplest fix is to use strings instead.
pos_up = table(repmat("upright", size(up_data, 1), 1));
pos_upt = table(repmat("upright_t", size(upt_data, 1), 1));

Più risposte (0)

Prodotti

Release

R2020b

Community Treasure Hunt

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

Start Hunting!

Translated by