read and write data from .mat file

I have a .mat file containing matrix of size 8x3800000.
I need to read 8x980 matrix twice at a time, process it(overlap add technique of convolution) and write back the processed data into a new file.
That is, at a time my RAM should hold only 2x(8x980) data blocks.
How can I do it efficiently? Please help me with the relevant syntax.
Thank you.

Answers (1)

Do you have the DSP System Toolbox? You can use dsp.MatFileReader
For example:
filename = [tempname '.mat']; % Create variable name
originalData = rand(100,4);
save(filename,'originalData','-v7.3'); % Write to MAT file
H = dsp.MatFileReader(filename,'VariableName',...
'originalData','SamplesPerFrame', 25);
Y = step(H);
Each time step() is called you get 25x4 out of the 100x4 matrix.

5 Comments

I have DSP System Toolbox but donot have dsp.MatFileReader.
This is in R2012a. Are you able to update?
how can I update? I have R2011b currently.
You have to contact MathWorks for that. If your version of MATLAB is on maintenance, you should be able to just download R2012a. I don't know what your licensing situation is, so contact MW.
How can I only write data into file sequencially after processing? For example: At first, I have two blocks of length 1024, I overlap(44 samples in head and tail) and add them, then save(write) the first 1024 in a file. Then I do the same for 2nd and 3rd blocks and save the 2nd block behind the first block (and so on..) How can I do this?

Sign in to comment.

Asked:

on 21 Mar 2012

Community Treasure Hunt

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

Start Hunting!