Создание векторного файла функций - PullRequest
0 голосов
/ 26 сентября 2019

Я хочу создать векторную функцию в Matlab, определяемую следующим образом:

enter image description here

Код, который у меня есть:

function [Ex, Ey, Ez] = E_field()
syms x y z
con = -2.8E+8;
E = con*z.^3;
Ex = matlabFunction(E(1));
Ey = matlabFunction(E(2));
Ez = matlabFunction(E(3));
end

Однако, Я получаю эту ошибку, когда на эту функцию ссылаются, когда запущен решатель ode Matlab:

Index exceeds the number of array elements (1).
Error in sym/subsref (line 890)
            R_tilde = builtin('subsref',L_tilde,Idx);
Error in E_field (line 7)
Ey = matlabFunction(E(2));

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

function [Bx, By, Bz] = B_test()
Bfieldstrength = 0.64; %In (Teslas)
magvol = 3.218E-6; %In (m)
mu0 = (4*pi)*10^-7;
magnetization = (Bfieldstrength*magvol)/mu0;
syms x y z
m = [0,0,magnetization];
r = [x, y, z];
B = mu0*(((dot(m,r)*r*3)/norm(r)^5) - m/norm(r)^3);
Bx = matlabFunction(B(1));
By = matlabFunction(B(2));
Bz = matlabFunction(B(3));
end

Я знаю, что в файле E-field есть только один компонент, из-за чего Matlab не может определить E (1) или E (2) какпросто «символический ноль» (И назначает E для E (1)), так как же я могу понять, что компоненты E (1) и E (2) равны нулю, а E (3) нет?Я прочитал всю документацию Matlab для их "matlabFunction", но ничего из этого не было полезно для этого случая.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...