对符号数组中的符号值和符号变量进行分类

Classifying Symbolic Values and Symbolic Variables within a Symbolic Array

我有一个 "sym" 类型的包含六个值的向量(但它可以无限长)。在这种情况下,向量具有数字和变量(所有 class 符号)。

a=[0.6 ; x_1; 0; 0; x_2; 0]

我想编写一个算法来判断 a(1)=number、a(1)=zero 还是 a(1)=variable。

但如果 x_1x_2 是符号变量,则数组 a 及其所有元素自动成为符号变量,即 class(a(1)) 将 return 'sym'(来自@horchler)。

如果 x_1x_2 是符号变量,则数组 a 及其所有元素自动是符号变量,即 class(a(1)) 将 return 'sym'。看起来您想确定一个元素是符号值还是符号表达式(由一个或多个符号变量组成)。您可以为此使用 symvar。您需要使用 for 循环遍历数组以检查每个元素,例如:

syms x_1 x_2;
a = [0.6; x_1; 0; 0; x_2; 0];

for ai = vpa(a(:).')
    if isempty(symvar(ai))
        if ai == 0
            disp('Zero value');
        else
            disp('Non-zero value');
        end
    else
        disp('Symbolic expression or function');
    end
end

vpa 函数用于计算 a 中可能简化为数值的任何表达式。如果您知道输入数组的样子,则可以删除 vpa。如果需要,您可以使用 double 将符号值转换为浮点数。