С Новым годом! Форум программистов, компьютерный форум, киберфорум
Matlab
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
4 / 4 / 2
Регистрация: 14.07.2009
Сообщений: 39

Типы данных в Matlab

16.09.2010, 12:36. Показов 9135. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте,

пишу программу в Matlab, которая активно использует свертки методом overlap and add. Проблема вся в том, что нужно свернуть последовательность из 2*10^8 с последовательностью 5*10^6. За основу был взят алгоритм fftfilt и слегка подрихтован под свои задачи. Но все равно остается одна большая проблема - слишком долго выполняется и слишком много памяти требуется. Я пробовал перевести данные в формат int8, но светрка, написанная через преобразование Фурье, напрочь отказывается считать это преобразование в int8.

Тогда я попытался хотя бы понять как правильно работают типы данных в Матлабе и будет ли быстрее работать с интом, нежели с родным даблом. Запускал вот этот скрипт:

Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
y = 0;
x = 0;
 
for h=1:20
 
    N = 1000*h;
 
    a = randint(1,N,[0, 10]);
    c = randint(1,N,[0, 10]);
    aa = int8(a);
    cc = int8(c);
 
    b = rand(1,N);
    bb = double(b);
    e = rand(1,N).*10;
    ee = double(e);
 
    sumint = 0;
    sumint = sumint
    sumfloat = 0;
    timeintsum = 0;
    timefloatsum = 0;
 
    for i=1:N
        tic
            sumint = sumint + aa(i)*cc(i);
        timeint = toc;
        timeintsum = timeintsum + timeint;
    sumint = sumint
       
        tic
            sumfloat = sumfloat + bb(i)*ee(i);
        timefloat = toc;
        timefloatsum = timefloatsum + timefloat;
    end;
 
    y = [y timeintsum];
    x = [x timefloatsum];
   
end;
 
figure
hold on;
plot(1:length(y),y,'r');
plot(1:length(x),x,'b');
grid;
Увы, результаты, мягко сказать шокировали - во-первых, так просто оно не работает, и sumint = sumint + aa(i)*cc(i); не преобразует автоматически инт8 в инт16\32. Поэтому, меняем ее на sumint = int32(sumint) + int32(aa(i))*int32(cc(i));

Но и это дает проблемы - в десять раз длиннее вычисления :\ в чем подвох? В переводе типов? возможно ли уменьшить количество памяти и сделать программу быстрее, если использовать целочисленные типы данных вместо плавающей точки?

p.s. почитав литературу по Си было сказано - испольуйте те типы, которые приведут вас к меньшей погрешности. Затрата времени на преобразование типов чаще больше, нежели на перевод их из одного типа в другой. так ли это?

Заранее благодарен
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.09.2010, 12:36
Ответы с готовыми решениями:

Интеграция MatLab в C#: разные типы данных
в матлабе реализовал генерацию простого числа, и воспользовался этим в шарпе с помощью следующего кода functionClass obj_fun = new...

Типы данных: есть ли универсальный тип, который может заменить все типы данных в Си?
Добрый вечер! Был бы очень признателен, если бы Вы помогли бы мне понять нижеследующие вопросы: 1. Можете ли на понятным для...

Какой формат базы данных DSN Access (атрибуты и типы данных)?
В настройках IIS можно выбирать формат журнала, один из форматов - это DSN Access, то есть события журналируются в базу данных. Так вот,...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
16.09.2010, 12:36
Помогаю со студенческими работами здесь

Типы данных: чем отличается тип данных int от float?
Всем привет! Помогите пожалуйста, чем отличается тип данных int от float?

Типы данных, которые можно использовать в предложении foreach в качестве поставщика данных
Типы данных, которые можно использовать в предложении foreach в качестве поставщика данных 1 StringBuilder объекты 2 String и...

Чтение недопустимых данных, динамические массивы, типы данных
Добрый день, реализую метод интерполяции сплайнами на С++, при подсчете одного из коэффициентов появляется данное сообщение. "...

Для следующих значений данных определить типы данных
Для следующих значений данных определить типы данных, указать какой объем памяти они занимают, ввести их в память компьютера как переменные...

Типы данных С# для передачи данных через TCP
подскажите пожалуйста какой тип переменной лучше всего использовать в C# для передачи данных через TCP, что бы можно было передать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru