|
|
  |
Перевод коэффициентов в формат 0.15 |
|
|
|
Oct 31 2009, 14:12
|

Участник

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

|
Цитата(DRUID3 @ Oct 31 2009, 18:08)  Напишите скрипт... На чем? Не представляю, как писать скрипт для работы с текстом ASCII. Не верю, что никто раньше с этим не сталкивался. Может, в том же Matlabe есть средства?
|
|
|
|
|
Oct 31 2009, 15:45
|

Участник

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

|
Цитата(V_G @ Oct 31 2009, 19:24)  А кто будет потреблять продукт перевода? Если какой-нибудь компилятор, то может, ему можно подсунуть файл в ASCII формате? А в разные представления числа можно переводить и в Excele (с обратным экспортом в ASCII формат). Например, коэффициенты ЦФ для ассемблера adsp21XX вполне можно передавать в текстовом формате. Потреблять будет ADSP-21xx. Использую VDSP++3.5 Я инициализирую массив коэффициентов в PM из файла: .section/pm pm_da; .VAR coef[K]="coef_table.dat"; Проблема в том, что компилятор ругается, если числа в dat-файле в десятичном представлении. Пример: Фрагмент dat-файла -0.00091909820846825603 -0.0027176960265955 -0.0024869527598323101 0.0036614383835070902 0.0136509252306624 0.017351165901093299 0.0076653061904216804 -0.0065547188696423999 -0.0076967840370653602 выдает синтактическую ошибку Но если 0xbf4e 0xbf66 0xbf64 0x3f6d 0x3f8b 0x3f91 0x3f7f 0xbf7a 0xbf7f все в порядке Еще меня смущает, что Matlab представляет отрицательные числа в дополнительном коде, поймет ли MAC DSP такую форму записи? Пример: MR=MR+MX0*MY0(SS);
|
|
|
|
|
Oct 31 2009, 18:15
|

Профессионал
    
Группа: Свой
Сообщений: 1 818
Регистрация: 15-10-09
Из: Владивосток
Пользователь №: 52 955

|
Я детям (студентам) в курсовом как раз даю такое задание (они проектируют ЦФ, а потом прошивают в EZ-kit lite). В экселе с включенным пакетом анализа есть функция "ДЕС.В.ШЕСТН", она дает требуемый формат. Потом просто выделяете столбец с переведенными этой функцией коэффициентами, делаете ctrl-c, а затем ctrl-v в блокнот. Фсе
Да, коэффициенты они берут из Матлаба и умножают на 16384 для получения целочисленных двухбайтовых. Если массив надо разместить в памяти программ (24-битной), домножают еще на 256. Но это для старого ассемблера. VDSP++, возможно, засосет и просто целые десятичные числа в пределах от -32768...32767
Сообщение отредактировал V_G - Oct 31 2009, 18:21
|
|
|
|
|
Nov 3 2009, 09:58
|
Группа: Новичок
Сообщений: 1
Регистрация: 16-06-05
Пользователь №: 6 053

|
Цитата(Fenolftalein @ Oct 31 2009, 17:03)  Здравствуйте, извините, если не совсем по теме. Есть dat-файл с коэффициентами ЦФ в десятичном виде. Кто-нибудь подскажет прогу для перевода коэффициентов в формат 0.15. (пересчитывать вручную каждый раз не улыбается) Матлаб a=[-0.00091909820846825603 -0.0027176960265955 -0.0024869527598323101 0.0036614383835070902 0.0136509252306624 0.017351165901093299 0.0076653061904216804 -0.0065547188696423999 -0.0076967840370653602]; b = num2hex(quantizer('double'),a); for(n=1:size(b,1)) %sprintf(fd, '0x%s\n\r', b(n,1:4)') % fd - дескриптор открытого файла disp(sprintf('0x%s', b(n,1:4)')) end
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|