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 ==> typecastcThe 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)
Best Answer