convert the cell array to double

4 次查看(过去 30 天)
sarfudeen
sarfudeen 2014-10-27
编辑: sarfudeen 2014-10-28
Hi...
I have a cell array of size 31685 X 59. I want convert into a double. I used str2double but it takes longer duration of 130 sec for execution of the conversion.Please suggest me a alternative way to make it faster to lesser than 5 sec.
The first two columns in the cell array are of Date and Time.
Awaiting for earlier response...
Regards, M. Sarfudeen
  2 个评论
Jan
Jan 2014-10-27
Please post a minimal example of your data. "Date and Time" could be a string, a serial date number or two diffent columns. What is the wanted output?
Please post the code your are currently using. Then it is much easier to improve the code. Perhaps you only forgot to pre-allocate the output and you can solve this in milliseconds.
sarfudeen
sarfudeen 2014-10-28
编辑:sarfudeen 2014-10-28
Hi Jan,
My code as follows:
[File,Path] = uigetfile({'*.csv','MultiSelect','ON');
fmt = '%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q%q';
z = ischar(File);
if z == 0
num = length(File)
temp = cell(1,num);
parfor i = 1: num
fid1 = fopen(fullfile(Path,File{1,i}),'r');
temp(i) = textscan(fid1,fmt,'Delimiter',',','CollectOutput',1);
fclose(fid1);
end
end
This is my code for reading the multiple csv files.
The temp stores the data as cell array of strings. I would like to convert the temp to double using str2double but it takes too much of time (approx... 130 sec) as my files are of 365 files.
The first column is of Date with format as 'yyyy-mm-dd'
The second column is of Time with format as 'HH:MM:SS'
Kindly please provide me solution which makes the conversion as fast as possible at the earliest.
I am using Matlab R2012b version.

请先登录,再进行评论。

回答(2 个)

Orion
Orion 2014-10-27
Hi,
if your cell array contains only doubles, then use cell2mat.
C = {1 2 ; 3 4};
M = cell2mat(C);

sarfudeen
sarfudeen 2014-10-27
I used A = cell2mat(CellArray) but the error message is of:
Cannot support cell arrays containing cell arrays or objects.
Error in repowerver1/sm1Callback (line 537) A = double(cell2mat(tempdata));
Error while evaluating uimenu Callback
The data format of cell array is of string

类别

Help CenterFile Exchange 中查找有关 Data Type Conversion 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by