I have a ~30 GB worth of data in a .mat file. The .mat file has m*n (m = ~10^9, n = 10).
I need to run a simulation that derives its value from randomly selected row (from a choice of row 1:m).
The column (1:n) has the simulation parameters.
What is the best way (memory and speed) to do it? Is it possible to do it without loading/importing the entire .mat file in Workspace?

 채택된 답변

Ameer Hamza
Ameer Hamza 2020년 3월 31일

0 개 추천

Yes, you can read data from a mat file without loading it completely. See matfile()https://www.mathworks.com/help/matlab/ref/matlab.io.matfile.html

댓글 수: 2

hal9k
hal9k 2020년 4월 1일
Here is what worked for me.
tic
importData = matfile(filename);
data_info = whos('-file',filename);
row = data_info.size(1);
rand_row= randi([1 row],1);
output = importData.filename(rand_row,:)
toc
Elapsed time = 0.02 sec.
This is great.
Ameer Hamza
Ameer Hamza 2020년 4월 1일
Glad to be of Help.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

질문:

2020년 3월 31일

댓글:

2020년 4월 1일

Community Treasure Hunt

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

Start Hunting!

Translated by