eval () не работает для имен матриц - PullRequest
0 голосов
/ 02 мая 2011
a1=[1 2 3];
a2=[1 2 3];
i=2;
//below, I'm trying to check if size(a1,2) ~= size(a2,2)
if size(a1,2) ~= size(eval(['a' num2str(i)]),2),
disp('columns not equal');
else
disp('columns equal');
end

Приведенный выше код отображает «столбцы не равны», когда столбцы равны . Что я делаю не так?

1 Ответ

0 голосов
/ 02 мая 2011

Когда я запускаю ваш код в MATLAB R2010b, я получаю правильные результаты. Вот некоторые вещи, которые вы должны проверить:

  • Попробуйте INT2STR вместо NUM2STR (я предполагаю, что это , а не источник проблемы, но просто для проверки).

  • Введите команду clear all, чтобы очистить основное рабочее пространство, а затем попробуйте снова выполнить код. Это исключит любую вероятность того, что вы затеняете функции eval, size или num2str локальной переменной.

  • Проверьте, не скрываете ли вы eval, size или num2str с помощью пользовательской функции, с помощью команды WHICH . Например, это покажет вам все перегруженные версии eval, которые существуют в настоящее время:

    which eval -all
    
  • Если у вас все еще есть проблемы, выясните, какую версию MATLAB вы используете, и посмотрите, существует ли сообщение об ошибке, включающее функцию EVAL , в . Страница поддержки MathWorks ( ПРИМЕЧАНИЕ: вам необходим логин учетной записи MathWorks для доступа к отчетам об ошибках).

...