代码之家  ›  专栏  ›  技术社区  ›  PatStarks

如何以符号形式从Matlab函数返回答案

  •  0
  • PatStarks  · 技术社区  · 8 年前

    我试图以符号变量的形式从Matlab返回一个答案。我创建了以下代码和函数来说明我收到的错误:

    clc
    clear all
    syms L real;
    % L = 1  % The code works when I uncomment this line
    k1 = [ L,  -L;
          -L, 2*L]
    k2 = [4*L^2, -L;
          0,      L]
    K = GlobalStiffnessMatrix(k1,k2)
    

    m file GlobalStiffnessMatrix。m如下所示:

    function K = GlobalStiffnessMatrix(k12,k23)
        K = zeros(2,2);
        K(1,1) = k12(1,1);
        K(1,2) = k12(1,2);
        K(2,1) = K(1,2);
        K(2,2) = k12(2,2) + k23(1,1);
    end
    

    我收到以下错误:

    从sym转换为double时发生以下错误: 使用symengine时出错(第59行) 如果输入表达式包含符号变量,请使用VPA。

    我曾尝试在函数本身和模拟代码中使用VPA,但仍收到相同的错误。当然,当我取消注释行设置时 L = 1 该函数工作正常,符合预期。

    K 作为符号变量?

    1 回复  |  直到 8 年前
        1
  •  1
  •   Wolfie Radu Stefan    8 年前

    K = zeros(2,2);
    

    然后尝试使用

    K(1,1) = k12(1,1);
    

    相反,初始化 K 作为符号2x2矩阵,使用 sym (参见文档 here ).

    K = sym('K', [2,2]);
    

    现在,每个元素 K