MATLAB fread
поддерживают типы ANSI C, но нет родных типов ANSI C, которые представляют собой комплексные числа. Скорее всего, сложное число сохраняется как пара реальных и мнимых чисел.
Без информации о том, как сохраняется двоичный файл, вы все равно можете выполнить некоторый тест, чтобы понять это. Если комплексное число представлено как действительная часть и мнимая часть, и как в точности double
, тогда одно комплексное число будет занимать 8 + 8 = 16 байт. Мы можем проверить это, перейдя в конец файла и посмотрим, сколько там байтов.
fID = fopen('matrix.bin','r')
fseek(fID, 0, 'eof') % Go to the end of file
ftell(fID) % Tell current position in the open file
fclose(fID)
Если это число равно 16 * 100 * 100 = 160000, то вам повезло. Там нет дополнительный материал сохраняется в этом файле, и вы можете просто прочитать данные с помощью этого кода:
fID = fopen('matrix.bin','r')
data = []
for ii = 1:10000
data = [data; fread(fID, 2, 'double')']
end
fclose(fID)
Вы будете в конечном итоге с массивом 10000 * 2, с каждой строкой, представляющей собой комплексное число. Если размер файла равен 80000, то реальную и мнимую часть можно сохранить в виде данных single
. Если размер файла - это какое-то другое число, то, вероятно, это означает, что в двоичном файле хранится дополнительная информация. Вам нужно знать, какая дополнительная информация хранится, чтобы вы могли правильно прочитать файл.
Опечатка в моем коде: i = fopen ('matrix.bin', 'r') A = fread (i, [100 100]) – Maya
Каков формат вашего файла 'bin'? Как хранятся сложные данные? – rayryeng
Файл bin генерируется калькулятором, который содержит сложную матрицу, и невозможно отобразить содержимое этого файла. Что вы подразумеваете под форматом bin? – Maya