im, пишущий программу для подпрограммы подстановки и в настоящее время оптимизирую код для более быстрых вычислений. Точка затухания - это часть, где мне приходится вычислять большое количество функций бесселя, которое занимает около 0,7 с. В моем случае д имеет 177 записей, 100-й и R 400.Более быстрый способ вычисления функции bessel в matlab
Js = zeros(numel(th),numel(q)); tR=sin(th')*R;
for k = 1:numel(q)
Js(:,k) = sum(tn.*besselj(0,q(k)*tR),2);
end
Я также пытался сделать 3D-матрицы, но это займет немного больше времени, чтобы вычислить.
[Q,T,RR]=meshgrid(q,sin(th),R);
Js1 = besselj(0,Q.*T.*RR);
Итак, мне интересно, есть ли способ быстрее вычислить эти функции? спасибо заранее, Куй
Я не думаю, что есть. Вы ограничены использованием встроенного 'besselj'. – rayryeng
Вы пытались использовать 'bsxfun'? – flawr
Каковы размеры входов? Сколько измерений имеет каждый из входов? Какие из них являются векторами и снова являются ли они векторами строк или столбцов, а какие - более тусклыми матрицами? Рассказывая нам, количество записей не дает нам эту информацию. – Divakar