【问题标题】:Matlab Undefined function or method 'C' for input arguments of type 'double'Matlab 未定义函数或方法“C”,用于“double”类型的输入参数
【发布时间】:2013-09-01 09:08:45
【问题描述】:
function simps()
A=[0,0];
B=[0,0]; 
set_param('circuit/LINE2','Capacitance',num2str(C(1)))
        sim('circuit')
    B=[Real,Reactive];
        A=[A;B];    
end

C 是一个矩阵。它包含 10 个变量。像 1,10,50,100 随机数。它在 uF 中。 circuit 是文件名 Real Reactiveto workspace 名称。 LINE2 是 RLC 分支的名称。 RLC 支路只包含电容。

我遇到错误

"未定义函数或方法'C'用于类型的输入参数 '双倍的'。 "

我搜索了stackoverflow,每个人都在谈论目录问题。但是我所有的文件都在 RUN 目录中。

我做到了

>> which C

返回

C is a variable.

所以我认为 C 在 matlab 的目录路径中。那么错误在哪里呢?

【问题讨论】:

    标签: matlab function double simulation circuit


    【解决方案1】:

    您必须执行以下任一操作

    a)C 作为参数传递给函数simps()

    b) 从工作区评估 C

    C = evalin( 'base', 'C' );

    在使用之前的函数内部。

    此外,通常不鼓励使用 evalevalin,因为这会使您的代码更难遵循和重用。

    提示:

    您可能希望将两者结合起来,如下所示

    function simps(C)
    if nargin == 0
        C= evalin( 'base', 'C' );
    end
    % Your code
    

    【讨论】:

    • 是的,将变量作为参数传递是有效的。但是为什么会出现这个错误呢?当我使用脚本时,它运行良好,但在功能上却没有。
    • @Moz 脚本通常会像直接从命令窗口运行一样被执行,因此可以访问所有工作区变量,但是您不能简单地在函数内部使用工作区变量
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-16
    • 2014-05-09
    • 1970-01-01
    • 2021-07-12
    • 2012-04-24
    • 1970-01-01
    相关资源
    最近更新 更多