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.

Tags

Community Treasure Hunt

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

Start Hunting!