Я хочу напечатать эту функцию:Более эффективные альтернативы Eval функции в MATLAB (или, как печатать в 3D без предварительной оценки)
f=cos(q1+q2)
я установить диапазон как q1 и q2, как это:
q1=-pi:0.01:pi
q1=-pi:0.01:pi
затем, чтобы использовать сетку (это не то, что мне нравится эта функция, это только один я нашел) я должен:
1) создать meshgrid для й и у 2) создать матрицу для мой fc ontaining его значения для meshgrid так
[X,Y]=meshgrid(x,y)
сейчас, для 2) если я
for i=1:length(x),
for j=1:length(y),
Z(i,j)=cos(x(i)+y(j));
end;
end;
, а затем сетки (X, Y, Z) она хорошо работает
НО
если я
for i=1:length(x),
for j=1:length(y),
Z(i,j)=eval(subs(f,[q1,q2],[x(i),y(j)]));
end;
end;
Требуется полчаса (буквально), чтобы получить Z, и я получаю это ужасно (у меня есть такие элементы, как cos (1194939423423424/4214242444122)
Я видел кого-то, использующего такую форму k = a, bf, но я не могу найти его в документации, и я полагаю, это то же самое в команде subs. Почему второй случай медленнее? Я хочу создать функцию, которая делает это взятием f в качестве входного сигнала, но если мне придется жестко кодировать его, потому что я не могу.
Я абсолютно нормально, если вы можете наклонить мне способ печати в 3d и получить кривые уровня без использования тех матрицы, но если вы можете ответить на мой вопрос, который я бы предпочел
Вам не нужно символическая, ни 'Eval()'. Однако я подозреваю, что вы не сформулировали вопрос надлежащим образом. Ниже приводится серфинг: '[q1, q2] = deal (-pi: 0.1: pi); [q1, q2] = meshgrid (q1, q2) surf (q1, q2, q1 + q2) ' – Oleg