2015-03-19 6 views
1
syms x1 x2 

f1(x1,x2)=x1^2-3*x2+5; 
f2(x1,x2)=-2*sin(x1)+5*x2*x1; 

M = [f1 ; f2]; 
disp(M(1)); 

Я пытаюсь создать матрицу символических выражений f1 и f2. Тем не менее, у меня возникают проблемы с доступом к определенному элементу внутри матрицы. Это дает мне ошибку, потому что она думает, что я хочу оценить матрицу, когда мне нужен только определенный индекс. Есть ли способ обойти это?Matlab Доступ к элементам в символической матрице

ответ

2

Если вы хотите символические выражения, а не функции, вам не нужны аргументы в скобках:

syms x1 x2 

f1 = x1^2-3*x2+5; 
f2 = -2*sin(x1)+5*x2*x1; 

M = [f1 ; f2]; 
disp(M(1)); 

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

f1 = @(x1,x2) x1^2-3*x2+5; 
f2 = @(x1,x2) -2*sin(x1)+5*x2*x1; 

M = {f1 , f2}; 
disp(M{1}); 

Затем вы можете вызывать функции: M{1}(5,3) возвращает 21, M{2}(5,3) возвращает 76,9

+0

У вас есть хороший момент. Но если я также хотел сохранить функциональность функции, как я это делаю? – Mike

+0

Добавлена ​​функциональная версия с массивом ячеек. –

Смежные вопросы