필터 지우기
필터 지우기

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