Yo lo hice así:
% Escoger archivo
[nombre_archivo,ruta]=uigetfile('*.txt','Escoja un archivo txt:');
nombre=[ruta,nombre_archivo];
matriz=[]; % se inicializa la matriz
if ischar(nombre) % si se escoge un archivo
id_archivo=fopen(nombre,'r'); % abre archivo para leerlo
if id_archivo==-1 % si hay error, da mensaje de error
texto=sprintf('El archivo "%s" no pudo abrirse para lectura.',nombre);
msgbox(texto,'Error','error');
else % si no hay error
while ~feof(id_archivo) % se ejecuta el bucle o lazo mientras no llegue al final del archivo de texto
linea=fgetl(id_archivo); % lee línea por línea y la agrega al cell array arreglo_llamada
espacio_blanco=find(isspace(linea)); % busca los espacios en blanco que separan las columnas de datos. Es un vector que puede tener al menos un elemento
% El primer número va desde el primer caracter hasta antes del
% espacio en blanco. El segundo número va desde después del
% espacio en blanco hasta que finaliza.
matriz(end+1,1:2)=[str2num(linea(1:espacio_blanco(1)-1)),str2num(linea(espacio_blanco(1)+1:end))];
end
% Se presenta la matriz obtenida:
disp('La matriz es:');
matriz
end
end