2013-12-22 2 views
1

давайте Рассмотрим функцию (вектор или матрица) Как показано ниже:Как получить доступ к массиву в матричной функции x?

[email protected](x)[x^2 cos(x) e^x 3*x]; 

Я хочу получить доступ к указанному массиву, как и (1,3) при х = 3. Как это сделать в MATLAB? Я пробовал:

matfunc(3)(1,3) 
(matfunc(3))(1,3) 
matfunc(3,1,3) 

, но это не работает.

ответ

1
  1. Лучший способ сделать это в Matlab, чтобы использовать промежуточную переменную:

    temp = matfunc(3); 
    temp(1,3) 
    
  2. Это возможно сделать это непосредственно (без промежуточной переменной), но не рекомендуется: громоздкий и вряд ли удобочитаемый. См. here.

  3. Другая возможность состоит в том, чтобы использовать массив ячеек функций (вместо векторной функции):

    matfunc = {@(x) x^2, @(x) cos(x), @(x) exp(x), @(x) 3*x}; 
    

    При таком подходе вы можете объединить два нумераций (первый индекс ячейки, чтобы выбрать функцию компонента, а затем входной аргумент):

    matfunc{3}(3) 
    
1

Вы пытаетесь использовать неправильный синтаксис. Вы должны оценить функцию первого, а затем вы можете индекс в результирующей переменной:

A = matfunc(3); 
A(1,2) 

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

index = @(A,i,j)A(i,j); 
index(matfunc(3),1,2) 
+0

+1 для идеи вспомогательной функции –

0

Лучше писать [а] = matfunc (вход); a (1,3)% это дает вам элемент 1,3 «a», который выводится «matfunc (input)»

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