UPDATE:
ОК, теперь, когда вы подтвердили, что ваши переменные x2
и y1
содержат разное количество элементов, у вас есть пара вариантов на выбор:
Для каждой переменной вы можете создать заданное количество значений в соответствующих диапазонах, используя функцию LINSPACE . Например:
x2 = linspace(0,5,101); %# 101 values spanning the range 0 to 5
y1 = linspace(-5,5,101); %# 101 values spanning the range -5 to 5
Однако, когда вы вычисляете результат f32
(который также будет массивом из 101 элемента), он будет оцениваться только по соответствующим парам значений в x2
и y1
(например, x2(1)
и y1(1)
, x2(50)
и y1(50)
и т. Д.).
Если вы предпочитаете оценивать f32
в каждую уникальную пару точек в диапазонах x2
и y1
, вам следует вместо этого использовать функцию MESHGRID чтобы генерировать ваши ценности. Это также позволит вам иметь различное количество точек в диапазонах для x2
и y1
:
[x2,y1] = meshgrid(0:0.1:5,-5:0.1:5);
Вышеуказанное создаст x2
и y1
как массивы 101 на 51, так что f32
также будет массивом 101 на 51, оцененным во всех точках в заданных диапазонах значений.
Предыдущий ответ:
Первое, что нужно проверить, это то, что все переменные, которые вы вводите в уравнение, имеют одинаковый размер или скалярные значения, какими они должны быть, поскольку вы используете поэлементные операторы, такие как .^
и .*
. Для первого уравнения посмотрите, что вы получите, когда сделаете это:
size(x2)
size(y1)
Если они дают один и тот же результат или имеют значение [1 1]
, то это не ваша проблема.
Следующее, что нужно проверить, это то, скрыли ли вы функцию EXP , создав переменную с именем exp
. Если вы запускаете код в виде сценария в окне командной строки, введите whos
и посмотрите, появляется ли переменная с именем exp
. Если это так, вам нужно удалить или переименовать его, чтобы вы могли использовать функцию EXP.