How to convert a char array into a double array?

I have a character array (68*1 int8)
Y = Columns 1 through 9
49 52 55 52 51 52 46 55 50
Columns 10 through 18
54 56 54 44 32 51 44 32 32
Columns 19 through 27
32 48 46 48 48 48 44 32 32
Columns 28 through 36
48 46 48 55 56 44 32 49 48
Columns 37 through 45
46 52 51 52 44 32 53 44 32
Columns 46 through 54
32 55 51 46 57 51 56 44 32
Columns 55 through 63
54 55 46 53 54 50 44 45 56
Columns 64 through 68
52 46 56 49 50
The real data looks like this
X = 147434.72686, 3, 0.000, 0.078, 10.434, 5, 73.938, 67.562,-84.812
It is a CSV array. I want to convert this into a double array, So that I can access each of the values in X as a decimal number.
edit: I'm sorry if the question wasn't clear. I'm getting IMU data from my phone on to matlab, the UDP packets which are actually like X is sent as Y. So inorder to do my computation I need to convert this back to floating point values.(ie change Y to X)

5 Comments

Y is not a character array
Please show us how you import the CSV file. If the file is imported by a sufficient method, no conversion is required afterwards.
Y looks like ASCII values of characters. Are X and Y both in the same CSV file, or are they in different CSV files? And what do you mean by "real"? If X is in a csv array and you read it in with csvread() then x is already a double (decimal number). What relationship, if any, does X have to Y? Y seems to be repeated values like ASCII values of characters '0' through '9', while X seems to be floating point numbers all over the place with no relationship at all to Y.
Please check the edited question. I hope it clears things.
Oh, I see now. You're getting x as an ascii string. So the values of Y are the ASCII values of each character of the X.

Sign in to comment.

 Accepted Answer

Y =[49 52 55 52 51 52 46 55 50,...
54 56 54 44 32 51 44 32 32,...
32 48 46 48 48 48 44 32 32,...
48 46 48 55 56 44 32 49 48,...
46 52 51 52 44 32 53 44 32,...
32 55 51 46 57 51 56 44 32,...
54 55 46 53 54 50 44 45 56,...
52 46 56 49 50];
Y(Y==44) = ' ' % Make separator be a space.
x = cell2mat(textscan(char(Y),'%f'))

More Answers (1)

>> v=str2num(char(cell2mat(Y)))
v =
1.0e+05 *
1.4743 0.0000 0
>> v(2)
ans =
3
>>
But, why don't you read the csv file as numeric to begin with????

1 Comment

HJ Jay
HJ Jay on 3 Aug 2014
Edited: HJ Jay on 3 Aug 2014
Sorry, but I'm afraid it's not working. I've edited the question to get rid of some ambiguity.

Sign in to comment.

Categories

Tags

Asked:

on 3 Aug 2014

Commented:

on 3 Aug 2014

Community Treasure Hunt

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

Start Hunting!