How to convert a cell array of singles and doubles to an array of a single type (double)?
11 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Minh Tran
am 19 Sep. 2018
Kommentiert: Minh Tran
am 25 Sep. 2018
I queried a database for an array of numerical values. The query is a function call that returns a struct of different cell-arrays (one of which is "struct.speed"). I tried use cell2mat() to convert each cell element to an array (of a uniform type, which is what cell2mat does) but I found out that some cells contained `singles` while others contained `doubles` (doubles where there were NaN values).
Attached is "struct.speed" (as well as the original struct) and the call I used to check the type of each cell element was:
cellfun(@class, struct.speed(:,1), 'UniformOutput', false);
I tried calling typecast and it produced an error I didn't understand:
EDITED: Oh right -- struct.speed(:,1) is a cell array and type cast only works on numeric values (or arrays of them).
K>> typecast(struct.speed(:,1), 'double')
??? Error using ==> typecastc
The first input argument must be a full, non-complex numeric value.
Error in ==> typecast at 31
out = typecastc(in, lower(datatype));
I need to do the type casting because I wanted to use slice-notation to assign the result to another struct "WHBB.Speed":
WHBB.Speed(:, bin) = struct.speed(:,1); % Error: Conversion to double from cell is not possible
The above statement works for slices of struct.speed that doesn't contain a mix of NaN's and numeric values (slices of all NaNs or slices of all doubles)
2 Kommentare
Stephen23
am 19 Sep. 2018
Do NOT call your variable struct, as this shadows the inbuilt struct function.
Akzeptierte Antwort
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!