2013-03-28 4 views
1

Я пытаюсь определить символическую переменную в функции суб обув (смотри ниже)Как определить символическую переменную в подфункции в Matlab? Получение: «Попытка добавить« бар »к статическому рабочему пространству».

function [ ] = test2() 

foo(); 

    function [] = foo() 
     syms bar; 
    end 

end 

я получаю следующее сообщение об ошибке, и я не знаю, как я могу решить эту проблему:

EDU>> test2 
Error using assignin 
Attempt to add "bar" to a static workspace. 
See MATLAB Programming, Restrictions on Assigning to Variables for 
details. 

Error in syms (line 66) 
     assignin('caller',x,sym(x)); 

Error in test2/foo (line 6) 
     syms bar; 

Error in test2 (line 3) 
foo(); 

Would оцените любую помощь, чтобы разобраться выше

ответ

1

Просто пропустите функцию syms. Он использует assignin для вывода аргументов, которые не разрешены для вложенных функций во время выполнения. Попробуйте:

function [ ] = test2() 

foo(); 

    function [] = foo() 
     bar = sym('bar'); 
     disp(bar+bar); 
    end 

end 

Выход:

2*bar 
Смежные вопросы