Matlab: читать в части двоичных данных

У меня есть набор данных (двоичный файл), который я хочу прочитать только первую половину данных X (и соответствующих Y), которые сохраняются в матрицу 4D:

 for i = 1:vols
    for j = 1:cols
       XY(i,:,:,j) = fread(fid,[X Y],'int16');
    end
 end

Как мне изменить вышеприведенный цикл, чтобы считывать только первые, например, 10-кратные данные (и соответствующие Y) для каждого vols и cols?

Спасибо

1 ответ

Решение

Вам нужно будет реализовать чтение для каждого vols и cols в следующем порядке: прочитать часть Y для первого ввода X, затем пропустить остаток этой строки, прочитать часть Y для второго ввода X и т. Д.

После прочтения запрошенного количества строк X вам нужно будет пропустить остаток матрицы, прежде чем читать следующую (vols, cols) пару.

Чтобы пропустить часть матрицы вы можете использовать функцию fseek.

Пусть X_count и Y_cound являются размерами подматрицы; X_total и Y_total - размерность полной матрицы. Вам нужно что-то вроде следующего:

for i = 1:vols
   for j = 1:cols
      for k=1:X_count
          XY(i,k,:,j) = fread(fid,Y_count,'int16');
          fseek(fid,(Y_total-Y_count)*2,'cof');
      end
      fseek(fid,(X_total-X_count)*Y_total*2,'cof');
   end
end
Другие вопросы по тегам