Для моего задания мне необходимо прочитать матричные данные из файлов (Phase.dat и Magnitude.dat), которые содержат комплексные числа для восстановления изображения по отдельным данным. т.е. восстановление изображения по фазе и величине в отдельности. Но я не могу правильно прочитать данные из файла. Я попробовал какое-то решение из здесь , но решение выдает ошибку. Мой желаемый вывод имеет вид матрицы, похожую на
( [ 1.0, 3.5, 5.4, 7.9 ],
[ 9.0, 2.5, 4.2, 3.6 ],
[ 1.5, 3.2, 1.6, 6.5 ] )
Первый метод:
x = np.fromfile('Phase.dat', dtype=np.uint8)
Выход:
array([ 77, 65, 84, ..., 115, 128, 63], dtype=uint8)
Второй метод:
data = np.genfromtxt('Phase.dat',
skip_header=1,
skip_footer=1,
names=True,
dtype=None,
delimiter=' ')
Ошибка: UnicodeDecodeError: 'utf-8' codec can't decode byte 0x80 in position 160: invalid start byte
Третий метод:
import numpy as np
def is_float(string):
""" True if given string is float else False"""
try:
return float(string)
except ValueError:
return False
data = []
with open('Phase.dat', 'r') as f:
d = f.readlines()
for i in d:
k = i.rstrip().split(",")
data.append([float(i) if is_float(i) else i for i in k])
data = np.array(data, dtype='O')
Ошибка: UnicodeDecodeError: 'utf-8' codec can't decode byte 0x80 in position 160: invalid start byte
Любые предложения о том, где я иду не так? Спасибо за вашу помощь!
Обновление:
Я предоставил скриншот из моего редактора Matlab, как выглядит матрица, и выделил ее размер.