How do i convert a numerical cell array in a vector ?
2 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Davide Conti
am 29 Okt. 2019
Kommentiert: Guillaume
am 30 Okt. 2019
I have a data table imported from Excel with 304 rows and 75 columns.
At the position {10,30} for example i have a cell with comma delimitation like this:
Arr = {'5,6,16,17,19,21,25,27,28'}
I would like that in the position {10,76} of my matrix there is the same string of numbers converted into row vector.
0 Kommentare
Akzeptierte Antwort
Guillaume
am 29 Okt. 2019
A safer alternative to str2num would be:
sscanf(Arr{1}, '%d,') %assuming all the numbers are integers, otherwise '%f'
2 Kommentare
Guillaume
am 30 Okt. 2019
You already have a number in the 2nd row (as opposed to textual representation of numbers). There's nothing to do there.
However, note that it's rarely a good idea to mix actual numbers and text in the same container. You will have to test whether each row is actually textual or numeric before using it.
If you wanted to convert that whole column, you could use a loop as follows:
for row = 1:size(yourcellarray, 1)
if ~isnumeric(yourcellarray{row, somecolumnindex})
yourcellarray{row, somecolumnindex} = sscanf(yourcellarray{row, somecolumnindex}, '%d,').';
end
end
Weitere Antworten (1)
Sebastian Bomberg
am 29 Okt. 2019
str2num(Arr{:})
1 Kommentar
Guillaume
am 29 Okt. 2019
Bearbeitet: Guillaume
am 29 Okt. 2019
I would be very careful with using str2num on arbitrary input coming from an excel file. str2num is a dangerous function that will happily eval whatever text it is passed so somebody could easily craft an excel file that would make str2num format the hard drive or other nastiness.
e.g. on window see the effect of:
Arr = {'system(''notepad'')'}
str2num(Arr{1}) %opens notepad
Siehe auch
Kategorien
Mehr zu Data Type Conversion finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!