2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 MATLAB: поэлементное применение функции к вектору
Сообщение11.02.2014, 13:54 
Здравствуйте!
Подскажите, пожалуйста, с MATLAB.
У меня есть такая функция:
Код:
function u0 = icfun(x)
global a
global ll
global beta
global gamma
global alpha
u0 = [0.01*(x*(ll - x) + a*ll/beta)/(ll^2/4 + a*ll/beta); 0.01*(x*(ll - x) + alpha*ll/gamma)/(ll^2/4 + alpha*ll/gamma)];


Она сохранена в файл icfun.m.

Когда я вызываю её для какого-то числа, например, так:
Код:
icfun(0)

то она считает результирующий вектор.

Я хочу построить график этой функции.
Если написать так:
Код:
x = linspace(0,ll);
icfun(x)

то MATLAB выдаёт ошибку. Я так понимаю, что он воспринимает аргумент как вектор.
А мне хотелось бы, чтобы он применил эту функцию к каждому элементу вектора.
Если это сделать со стандартными функциями (например, sin), то MATLAB именно так и делает.

По-моему, с аналогичной ситуацией я сталкивался при работе с Octave.
Заранее благодарен.

 
 
 
 Re: MATLAB: поэлементное применение функции к вектору
Сообщение11.02.2014, 14:05 
Подозреваю, что суть в отличии операций
Код:
*
и
Код:
.*

 
 
 
 Re: MATLAB: поэлементное применение функции к вектору
Сообщение11.02.2014, 14:35 
А нельзя как-то построить график этой функции, не ставя точку перед арифметическими операциями?
В принципе, можно и написать цикл для вычисления вектора значений функции.
А по-другому как-нибудь можно?

 
 
 
 Re: MATLAB: поэлементное применение функции к вектору
Сообщение11.02.2014, 14:39 
Аватара пользователя
цикл - это "плохой" путь. Вариант с точкой - хороший. Непонятно, почему он Вам не нравится.

 
 
 
 Re: MATLAB: поэлементное применение функции к вектору
Сообщение11.02.2014, 16:45 
Аватара пользователя
SuperH1 в сообщении #825263 писал(а):
А нельзя как-то построить график этой функции, не ставя точку перед арифметическими операциями?

Можно, см. функцию arrayfun. Первые аргумент -- указатель на функцию, а второй -- нужный массив.

http://www.mathworks.com/help/matlab/ref/arrayfun.html

 
 
 
 Re: MATLAB: поэлементное применение функции к вектору
Сообщение11.02.2014, 23:49 
Большое спасибо за помощь!

 
 
 [ Сообщений: 6 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group