#matlab
#matlab
Вопрос:
У меня есть файл .pfs, содержащий анатомические структуры на рентгенограмме грудной клетки. Содержимое файла выглядит следующим образом:
;
; Array sets
;
; Written on 2002.12.30 (time: 15:06:39) by ??
;
{
[Label=right lung fixed]
[LineDisplay=0]
[PointColor=0.000000 1.000000 1.000000]
[PointDisplay=1]
[PointMode=Plusses]
[PointSize=1]
[PointWidth=6]
{ 380, 76 },
{ 149, 906 },
{ 438, 783 }
},
{
[Label=left clavicle fixed]
[LineDisplay=0]
[PointColor=0.000000 1.000000 1.000000]
[PointDisplay=1]
[PointMode=Plusses]
[PointSize=1]
[PointWidth=6]
{ 788.211, 98.0585 },
{ 768, 108.538 },
},
{
[Label=left clavicle]
[LineColor=1.000000 1.000000 0.000000]
[LineDisplay=1]
[LineMode=OpenContour]
[PointColor=1.000000 0.000000 0.000000]
[PointDisplay=1]
[PointMode=Plusses]
{ 788.211, 98.0585 },
{ 768, 108.538 },
{ 747.789, 116.023 },
{ 726.83, 122.012 },
}
Мне нужно считывать в матрицу только координаты, которые следуют за строкой, содержащей [PointMode=Plusses] . Приведенное выше является лишь частью файла. На самом деле файл содержит 5 наборов приведенного выше текстового шаблона с количеством координат после строки, содержащей [PointMode=Плюсы], различающихся по наборам. Мне нужно прочитать все эти координаты по всем 5 наборам в одну матрицу из 2 столбцов, первый столбец соответствует координате x, а второй столбец соответствует координате y.
Ответ №1:
Это быстрый взлом; он основан на фиксированном расположении в вашем файле и никаких сюрпризов (т. Е. Структур, Которые вы еще не показали в примере).
Итак, поместите следующее в скрипт, измените путь и имя файла на то, что имеет смысл в вашем случае, сохраните и запустите:
f = fopen('YourPathYourFile.pfs', 'r');
output = double.empty(0,2);
while ~feof(f)
line = fgetl(f);
values = sscanf(line, ' { %f, %f},');
if numel(values == 2)
output = [output; values'];
end;
end;
fclose(f);
В глобальной рабочей output
области будет массив пар (x, y).
Позже код редактирования был исправлен, пожалуйста, проверьте еще раз.