реклама на сайте
подробности

 
 
> Преобразование формата при записи в файл в матлабе?
Alex65111
сообщение Sep 8 2008, 09:46
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 141
Регистрация: 25-10-07
Пользователь №: 31 729



В матлабе необходимо сохранить результат вычислений в файле в другом формате. Делаю так

fwrite(fid,x,'double=>int32')

но матлаб матерится. Как правильно должно быть?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Alex65111
сообщение Sep 8 2008, 13:33
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 141
Регистрация: 25-10-07
Пользователь №: 31 729



А что тогда пишется, например, fwrite(fid, x, 'float32')?, в каком формате в файле будут данные?

И еще. У меня в массиве, полученном после обработки лежат данные в double, где максимальное значение равно 7 с копейками.
Тогда получается, что перед нормировкой я должен x/max(x)?, т.е. итого будет fwrite(fid,x/(max(x))*2^8,'int32')?

Сообщение отредактировал Alex65111 - Sep 8 2008, 13:50
Go to the top of the page
 
+Quote Post
sheh
сообщение Sep 8 2008, 14:34
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 122
Регистрация: 13-09-06
Пользователь №: 20 353



Цитата(Alex65111 @ Sep 8 2008, 17:33) *
А что тогда пишется, например, fwrite(fid, x, 'float32')?, в каком формате в файле будут данные?

И еще. У меня в массиве, полученном после обработки лежат данные в double, где максимальное значение равно 7 с копейками.
Тогда получается, что перед нормировкой я должен x/max(x)?, т.е. итого будет fwrite(fid,x/(max(x))*2^8,'int32')?


Я погорячился с тем что можно писать только целые числа. Извините, что ввел в заблуждение.
Я так понял float при записи автоматически нормируется, формат я незнаю.
Но если Вы запишите float32, а потом сделате fread(fid,x,'float32'), то получите теже числа, что и записывали. Тоеть формат вобщемто знать ненужно, главное знать какой тип Вы записывали в файл.
На счет quantizer не знаю сработает это или нет, но вобщемто несложно проверить.

По поводу нормировки.
если у Вас цель использовать полностью разрядную сетку, то Вы правы, максимальный коэф. надо сделать единицей, а затем помножить на (2^n-1). те если у Вас 8 бит, максимальное число должно быть 255 (бит знака я не учитывал).
иначе достаточно простого домножения на степень двойки.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 01:04
Рейтинг@Mail.ru


Страница сгенерированна за 0.014 секунд с 7
ELECTRONIX ©2004-2016