Как изобразить бесселеподобную функцию в MATLAB - PullRequest
2 голосов
/ 20 июля 2011

Я абсолютно новичок в MATLAB и знаю только несколько основных команд. Моя задача - построить такую ​​функцию:

I(T) = ((2*J(k*r*sin(T))/(k*r*sin(T))))^2

, где

T = angle

k = (2*pi*f)/c   (f= frequency in Hz and c is speed of sound)

r = radius

J = bessel function first kind

Я немного поясню: функция представляет силу звуковой волны в пространстве. Я много раз пытался построить это, но я всегда получаю одну точку в сюжете.

Ответы [ 3 ]

3 голосов
/ 20 июля 2011

Полагаю, вы определили свою функцию Бесселя в J.Если нет, то команда MATLAB для функции Бесселя первого рода будет besselj.Вам также нужно будет указать порядок функции Бесселя.

Вы можете определить свою анонимную функцию как

f=@(t,k,r)(2*besselj(0,k*r*sin(t))./(k*r*sin(t))).^2

и построить ее как

T=linspace(0,pi,100);%# a sample angle vector
plot(T,f(T,k,r))     %# where k and r are values you'll have to provide
0 голосов
/ 21 июля 2011

Наконец-то я нашел способ управления проблемой, описанной выше, вот решение, которое я нашел, на случай, если оно понадобится другим людям.

% MATLAB Инструкция для генерации графа бесселевой функции%% Переменные (фиксированные значения)% k = 912,91 r = 0,0215

% Установите диапазон для угла тета% тета = (- (2/3) * pi: pi / 180: (2/3) * pi)

% Вычисление функции Бесселя первого рода% J = besselj (1, k * r * sin (theta))

% Вычисление I Функция%% замечает операторы ./ и. ^ I= ((2 * J) ./ (k * r * sin (theta))). ^ 2

% теперь отображает результаты с помощью команды plot (theta, I)

0 голосов
/ 20 июля 2011

а как же

I = ((2*J(k*r*sin(T))./(k*r*sin(T)))).^2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...