37 views (last 30 days)
Show older comments
Ali Osman Gökcan on 12 Dec 2022
-
-
Link
Direct link to this question
https://matlabcentral.mathworks.com/matlabcentral/answers/1876362-combine-multiple-columns-into-one-column
Commented: Ali Osman Gökcan on 13 Dec 2022
Accepted Answer: Voss
Open in MATLAB Online
Hi. There is a table with the content in the image. I used the following code to convert the data in the 2nd column to integers:
matrix = PersontrainingData{:,:};
second_column = cell2mat(matrix(:, 2));
second_column = round (second_column);
Now I want to put together the first column in the picture (imagefilename) and the 4 columns I got after rounding, but I can't. I made various experiments and got results, but I do not share it so as not to prolong the topic. Thank you for your interest and have a nice day...
0 Comments Show -2 older commentsHide -2 older comments
Show -2 older commentsHide -2 older comments
Sign in to comment.
Sign in to answer this question.
Accepted Answer
Voss on 13 Dec 2022
⋮
Open in MATLAB Online
If you want to replace the original (unrounded) second column with a rounded version, try this:
% a table similar to yours:
PersontrainingData = table({'file1.png';'file2.png'},{[630 195 30 38];[626.9255 194.9444 29.7777 37.7592]}, ...
'VariableNames',{'imageFilename' 'person'})
PersontrainingData = 2×2 table
imageFilename person _____________ _____________________________________ {'file1.png'} {[ 630 195 30 38]} {'file2.png'} {[626.9255 194.9444 29.7777 37.7592]}
% replace of the existing "person" variable with its rounded values:
PersontrainingData.person = cellfun(@round,PersontrainingData.person,'UniformOutput',false)
PersontrainingData = 2×2 table
imageFilename person _____________ _________________ {'file1.png'} {[630 195 30 38]} {'file2.png'} {[627 195 30 38]}
2 Comments Show NoneHide None
Show NoneHide None
Ali Osman Gökcan on 13 Dec 2022
Direct link to this comment
https://matlabcentral.mathworks.com/matlabcentral/answers/1876362-combine-multiple-columns-into-one-column#comment_2514772
Thank you so much. Finally happened. :)
Thank you to everyone who tried to help.
Voss on 13 Dec 2022
Direct link to this comment
https://matlabcentral.mathworks.com/matlabcentral/answers/1876362-combine-multiple-columns-into-one-column#comment_2514777
You're welcome! Have a nice day.
Sign in to comment.
More Answers (1)
Jiri Hajek on 12 Dec 2022
Open in MATLAB Online
Hi, I believe you are almost there... To make the discussion simple, let's consider just one of the filenames. You need to make sure you have a variable (e.g. "fileName") containing the vector of characters (char array). Then you can separate parts of the filename using the fileparts function like this:
[filepath,name,ext] = fileparts(fileName)
Now you will be able to e.g. append your integer (myInteger) to the filename, for which you must turn it into char using num2str function like this:
newFileName = [name,num2str(myInteger)]
Hope this answers your question.
3 Comments Show 1 older commentHide 1 older comment
Show 1 older commentHide 1 older comment
Ali Osman Gökcan on 12 Dec 2022
Direct link to this comment
https://matlabcentral.mathworks.com/matlabcentral/answers/1876362-combine-multiple-columns-into-one-column#comment_2513752
Thank you very much for the super quick reply but I couldn't understand why we are using the fileparts command. :)
I'm trying to convert the table in the screenshot I shared in my question to the situation in the screenshot I shared in my current answer.
Jiri Hajek on 13 Dec 2022
Direct link to this comment
https://matlabcentral.mathworks.com/matlabcentral/answers/1876362-combine-multiple-columns-into-one-column#comment_2514757
Open in MATLAB Online
OK, perhaps it wasn't the expected answer after all, but please look at the title you gave to it... It's always good to ask a question precisely...Unfortunately, you did not provide a sample of the data, so I have to guess based on your code snippet that the second column was originally a column of cells, containing several columns of numeric values. Now that you tried to assign your "second column" variable, which is however a four-column matrix into a single column, that is not allowed. You can either convert rows of your data back into cells to make them a single column again, that way Matlab will accept it (here's how to do that: https://www.mathworks.com/matlabcentral/answers/386673-combine-each-row-of-matrix-into-a-single-vector-within-a-cell-array)
But tables also enable to put a matrix into a single column, but you need to assign it anew:
myTable = table(['f';'g';'h'],rand(3))
Ali Osman Gökcan on 13 Dec 2022
Direct link to this comment
https://matlabcentral.mathworks.com/matlabcentral/answers/1876362-combine-multiple-columns-into-one-column#comment_2514817
I will take into account what you said. Thank you for being with me in my journey of program development with Matlab.
Sign in to comment.
Sign in to answer this question.
See Also
Categories
MATLABLanguage FundamentalsMatrices and Arrays
Find more on Matrices and Arrays in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
An Error Occurred
Unable to complete the action because of changes made to the page. Reload the page to see its updated state.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- Deutsch
- English
- Français
- United Kingdom(English)
Asia Pacific
- Australia (English)
- India (English)
- New Zealand (English)
- 中国
- 日本Japanese (日本語)
- 한국Korean (한국어)
Contact your local office