Вы можете прочитать содержимое файла в массив строк, используя TEXTSCAN , преобразовать строки в числовые значения, используя CELLFUN и STR2NUM (символынапример, 'a'
и 'b'
приведут к пустой матрице []
), удалите строки массива ячеек, в которых есть пустые ячейки, а затем преобразуйте оставшиеся данные в матрицу N-by-2, используя CELL2MAT :
fid = fopen('junk.txt','r'); %# Open the file
data = textscan(fid,'%s %s','CollectOutput',true); %# Read the data as strings
fclose(fid); %# Close the file
data = cellfun(@str2num,data{1},'UniformOutput',false); %# Convert to numbers
data(any(cellfun('isempty',data),2),:) = []; %# Remove empty cells
data = cell2mat(data); %# Convert to N-by-2 array
Матрица data
теперь будет выглядеть следующим образом, учитывая ваш пример файла в вопросе:
>> data
data =
12 1
21 2
32 7
22 4
13 5
31 6
И вы можете получить строки, которые имеютзначение больше 5 во втором столбце, например, так:
>> data(data(:,2) > 5,:)
ans =
32 7
31 6