Info

This question is closed. Reopen it to edit or answer.

is there fast way for this problem

1 view (last 30 days)
huda nawaf
huda nawaf on 9 Jan 2012
Closed: MATLAB Answer Bot on 20 Aug 2021
hi, is there a fast way to deal with this problem:
I have 17770 files, each file has structure as:
id_user(integer), rate(integer),date
each file has unique id_user but may share these id_users with other files.
what I want is: each unique id _user be row in array such as: id_user1: rate1 date1 rate3 date3......raten daten id_user2: rate3 date3..rate20 date20........... etc..
I mean rate1 for ex. is rate of user1 in file 1 and rate3 in file 3 and so on. where id_user1 for ex. be in file 1 and file 3 id_user2 be in file 3 and file 20
I wrote code , it is work correctly, but very very slow, it need three hours to creat array with just 50 id_users(read all 17770). I have 480000 id's of users,I have to look for their ratings in 17770 files. I placed my files in folder, then read it one after one. I looked for unique id of users ,then use function (find)in all 17770. Each time looked for id of 30 users as ex. n all files ,then record their ratings in array , but this process take long time, where to accumulate data for 30 users take three hours .
any suggestions, advices may help me
thanks in advance

Answers (1)

Robert Cumming
Robert Cumming on 9 Jan 2012
are you preallocating? use the profiler to help locate the time where the code takes longest
profile on
% run your code
profile viewer
Run on a subset of your files for testing - then expand to include more files.
  9 Comments
huda nawaf
huda nawaf on 11 Jan 2012
i can not konow the no. of columns because the code itself will accumulate the the information from all files ,
see
u1 id-mv1 id-mv2.......unknown how many id-mvs
u2 id-mv1 id-mv2 id-mv3............
the id's for each users unknown, also i can not guesses largest no. of id-mv.
regarding dtstr2dtnummx, i got if from the link:
http://www.mathworks.com/matlabcentral/fileexchange/28093-datestr2num, and added it manually.
thanks
Robert Cumming
Robert Cumming on 11 Jan 2012
either preallocate tobigger than you need and check that it does not grow - or do a preloop to determine size. it will speed things up.

This question is closed.

Tags

Community Treasure Hunt

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

Start Hunting!