eval()不适用于矩阵名称

时间:2011-05-02 04:11:25

标签: matlab eval

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 :(得分:0)

当我在MATLAB R2010b中运行代码时,我得到了正确的结果。以下是您应该检查的一些事项:

  • 尝试使用INT2STR代替NUM2STR(我猜它是不是问题的根源,但请检查以确定)。

  • 发出clear all命令以清除主工作区,然后再次尝试运行代码。这将排除您使用局部变量隐藏函数evalsizenum2str的任何可能性。

  • 使用WHICH命令检查您是否使用用户定义的函数隐藏evalsizenum2str。例如,这将显示当前存在的所有eval的重载版本:

    which eval -all
    
  • 如果您仍然遇到问题,请找出您正在使用的MATLAB version,并查看EVAL上是否存在涉及this MathWorks support page功能的错误报告(注意:您需要MathWorks帐户登录才能访问错误报告。