Você provavelmente deve usar o textscan para ler os dados em pedaços e depois processar. Isso provavelmente será mais eficiente do que ler uma única linha de cada vez. Por exemplo, se você tiver 3 colunas de dados, poderá fazer:
filename = 'fname.csv';
[fh, errMsg] = fopen( filename, 'rt' );
if fh == -1, error( 'couldn''t open file: %s: %s', filename, errMsg ); end
N = 100; % read 100 rows at a time
while ~feof( fh )
c = textscan( fh, '%f %f %f', N, 'Delimiter', ',' );
doStuff(c);
end
EDITAR
Atualmente (R2014b e posterior), é mais fácil e provavelmente mais eficiente usar um
datastore
.