Форум программистов, компьютерный форум, киберфорум
Matlab
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.66/50: Рейтинг темы: голосов - 50, средняя оценка - 4.66
0 / 0 / 0
Регистрация: 26.09.2012
Сообщений: 22

Реализация функции в матлаб. Свертка.

27.11.2012, 07:42. Показов 10017. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
сегодня начал изучать matlab

помогите задать функции

на си я знаю как это сделать:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
double f(double x_volna)
{   
    if ((0<=x_volna) && (x_volna<=1.5)) return 1;
   // if (1.5<=x_volna) && (x_volna<=3.5)  
    else return 0.0036;
} 
double omega(double x)
{
    double epsilon2= 1.5;
//  const constant=1
    if (abs(x)<=epsilon2) return 1*exp(-(pow(epsilon2,2))/(pow(epsilon2,2)+pow(x,2)));
    else return 0;
}
но как это сделать в MATLAB не понимаю, выскакивают всякие ошибки...
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function f = Untitled(x) 
if (x<=1.5)
    f=1;
else
    f=0;
end
    
n=1000;
a=0;
b=3.5;
deltaH=(b-a)/n;
i=0:n;
R=a+deltaH*i;
y=Untitled(R);
plot(R,y)
clear
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.11.2012, 07:42
Ответы с готовыми решениями:

Реализация кнопки Exit в матлаб
Подскажите пожалуйста как при помощи командной кнопки реализовать выход из приложения.Интерфейс проектирован в среде GUIDE. function...

свертка функции
Всем привет, вот такой вопрос: делаю свертку функций, работаю с векторами, размер одного вектора допустим 128, размер другого сигнала, с...

Свертка функции и решение интегральных уравнений типа свертки
свертка функции и решение интегральных уравнений типа свертки , с помощью формулы как это можно реализовать в С#.

8
2014 / 1286 / 61
Регистрация: 05.06.2010
Сообщений: 2,213
27.11.2012, 08:46
Цитата Сообщение от romaf91 Посмотреть сообщение
на си я знаю как это сделать:
на матлабе это будет так:
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function y = f(x)
    if x>=0 && x<=1.5
        y = 1;
    else
        y = 0.0036;
    end
end
 
function y = omega(x)
    epsilon2 = 1.5;
    if abs(x)<=epsilon2
        y = exp(-epsilon2^2/(epsilon2^2+x^2));
    else
        y = 0;
    end
end
но это будет работать со скалярными значениями. Но вы используете вектор на входе. Всякие сравнения типа
Matlab M
1
 if x>=0 && x<=1.5
работать конечно не будут. Так что лучше полностью сформулируйте задание
1
0 / 0 / 0
Регистрация: 26.09.2012
Сообщений: 22
27.11.2012, 09:06  [ТС]
но это будет работать со скалярными значениями. Но вы используете вектор на входе. Всякие сравнения типа
Matlab M
1
 if x>=0 && x<=1.5
работать конечно не будут. Так что лучше полностью сформулируйте задание
вот мне нужна эта функция именно для работы с векторами.

у менея есть отрезок 0 до 3.5
есть число точек разбиения n=1000
Matlab M
1
2
3
4
5
6
7
8
n=1000;
a=0;
b=3.5;
deltaH=(b-a)/n;
i=0:n;
R=a+deltaH*i;
y=f(R);
plot(R,y)
и эта функция как раз должна принимать значения на входе из значений вектора R, тоже самое и касается функции omega

в конечном результате мне надо посичтать свертку этих двух функций
https://www.cyberforum.ru/cgi-bin/latex.cgi?\int_{-\propto }^{\propto }\omega (x-\tilde{x})*f(\tilde{x})d\tilde{x}
0
 Аватар для Зосима
5245 / 3573 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
27.11.2012, 10:24
Лучший ответ Сообщение было отмечено как решение

Решение

Цитата Сообщение от vital792 Посмотреть сообщение
Но вы используете вектор на входе. Всякие сравнения типа
if x>=0 && x<=1.5
работать конечно не будут.
Позволь чуток не согласиться
Конечно в таком виде условный оператор работать не будет, но можно обойтись без него
Преамбула: какой результат будет при такой записи?
Matlab M
1
2
x = 0:10
LX = (x>5)
Очевидно, что первая строка будет вектор, а вторая - тоже вектор!
Code
1
2
x =     0     1     2     3     4     5     6     7     8     9    10
LX =    0     0     0     0     0     0     1     1     1     1     1
Амбула: если применить логические вектора, то y можно выразить вот так:
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
clear;
clc;
 
a = 0; % нач. значений интервала
b = 3.5; % конечное значение интервала
n = 1000; % кол-во точек
 
R = linspace(a,b,n); % массив значений R
inD = (R>=0)&(R<=1.5); % логический векор-маска
 
y = 1*inD + 0.0036*(~inD); % вектор значений y
 
plot(R,y)
axis([-1 4 -0.5 1.5])
И никакого кодоблудия!
А для реализации свертки векторов есть встроенная ф-ция conv.
Вот пример ее использования:
Matlab M
1
2
3
a = [1 1 1 1 1]
b = [1 2 3]
conv(a,b)
Результат:
Code
1
2
3
4
a =     1     1     1     1     1
b =     1     2     3
 
ans =     1     3     6     6     6     5     3
3
2014 / 1286 / 61
Регистрация: 05.06.2010
Сообщений: 2,213
27.11.2012, 11:11
Цитата Сообщение от Зосима Посмотреть сообщение
Конечно в таком виде условный оператор работать не будет, но можно обойтись без него
Конечно можно, но это не тоже самое. Средствами матлаба вообще все решается просто и красиво. Поэтому я просил ТС формализовать задание.

Цитата Сообщение от romaf91 Посмотреть сообщение
в конечном результате мне надо посчитать свертку этих двух функций
и эти все заморочки из-за простой свертки?)
0
 Аватар для Зосима
5245 / 3573 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
27.11.2012, 12:15
Цитата Сообщение от vital792 Посмотреть сообщение
и эти все заморочки из-за простой свертки?)
непросто взять и перейти с кокаина на диэтиламид лизергиновой кислоты
0
0 / 0 / 0
Регистрация: 26.09.2012
Сообщений: 22
30.11.2012, 09:29  [ТС]
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
clear;
clc;
 
a = 0; % нач. значений интервала
b = 3.5; % конечное значение интервала
n = 1000; % кол-во точек
 
R = linspace(a,b,n); % массив значений R
inD = (R>=0)&(R<=1.5); % логический векор-маска
 
y = 1*inD + 0.0036*(~inD); % вектор значений y
 
plot(R,y)
axis([-1 4 -0.5 1.5])
спасибо !

вот решил сделать функцию omega по вашему алгоритму, но пишет что ошибка, в чем я неправ
Matlab M
1
2
3
4
5
6
epsilon2=1.5;
Rw = linspace(a,b,n); % массив значений R
inDw = abs(R<=epsilon2); % логический векор-маска
yw = (exp(-epsilon2^2/(epsilon2^2+Rw^2)))*inDw + 0*(~inDw);
plot(Rw,yw)
axis([-1 4 -0.5 1.5])
0
 Аватар для Зосима
5245 / 3573 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
30.11.2012, 10:08
Гляди в сюда:
Цитата Сообщение от romaf91 Посмотреть сообщение
Rw = linspace(a,b,n); % массив значений R
inDw = abs(R<=epsilon2)
abs(R<=epsilon2)
R<
У тебя же переменная имеет имя Rw
И еще точки не проставил перед делением, степенью и умножением
Matlab M
1
2
3
4
5
6
7
a = -1; b = 4; n =200;
epsilon2=1.5;
Rw = linspace(a,b,n); % массив значений R
inDw = abs(Rw<=epsilon2); % логический векор-маска
yw = (exp(-epsilon2^2./(epsilon2^2+Rw.^2))).*inDw + 0*(~inDw);
plot(Rw,yw)
axis([-1 4 -0.5 1.5])
Теперь рисует
1
0 / 0 / 0
Регистрация: 26.09.2012
Сообщений: 22
30.11.2012, 10:14  [ТС]
Цитата Сообщение от Зосима Посмотреть сообщение
Гляди в сюда:
У тебя же переменная имеет имя Rw
И еще точки не проставил перед делением, степенью и умножением
Matlab M
1
2
3
4
5
6
7
a = -1; b = 4; n =200;
epsilon2=1.5;
Rw = linspace(a,b,n); % массив значений R
inDw = abs(Rw<=epsilon2); % логический векор-маска
yw = (exp(-epsilon2^2./(epsilon2^2+Rw.^2))).*inDw + 0*(~inDw);
plot(Rw,yw)
axis([-1 4 -0.5 1.5])
Теперь рисует
ахахахахах))))) спасибо)) доходчиво и весело)))))
крутой форум) я здесь походу частенько буду зависать)
СПАСИБО)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
30.11.2012, 10:14
Помогаю со студенческими работами здесь

функции матлаб
Вопрос такой: Например есть вектор А=1 3 0 0 5 6. Какой функцией вывести нечетные элементы вектора? т.е. f(A)=1 0 5. Добавлено через...

Открыть txt-файл при его формировании в матлаб и сохранении вне матлаб
С помощью операторов fopen, fprintf и fclose в файл &quot;Press.txt&quot; записана текстовая информация : variables={'1.Первый', ' 2.Второй',...

Построение неявной функции в матлаб
1) exp(theta/(1+betta*theta))-eps1*r*theta*(1+betta*theta)=0 пробовала написать так: betta = 0.5; eps1 = 0.001; ...

При запуске матлаб через какое-то время физическая память доходит до 100% и матлаб вырубается и происходит дамп
При запуске матлаб через какое-то время физическая память доходит до 100% и матлаб вырубается. При этом в нем не запускаются никакие файлы....

Тригонометрические функции и углы в градусах в матлаб
Добрый день, никак не могу записать формулы в Матлаб. Не знаю как правильно записать градусы, сколько не бился ответ как в книге не...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru