对符号数组中的符号值和符号变量进行分类
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_1
和 x_2
是符号变量,则数组 a
及其所有元素自动成为符号变量,即 class(a(1))
将 return 'sym'
(来自@horchler)。
如果 x_1
和 x_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
将符号值转换为浮点数。
我有一个 "sym" 类型的包含六个值的向量(但它可以无限长)。在这种情况下,向量具有数字和变量(所有 class 符号)。
a=[0.6 ; x_1; 0; 0; x_2; 0]
我想编写一个算法来判断 a(1)=number、a(1)=zero 还是 a(1)=variable。
但如果 x_1
和 x_2
是符号变量,则数组 a
及其所有元素自动成为符号变量,即 class(a(1))
将 return 'sym'
(来自@horchler)。
如果 x_1
和 x_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
将符号值转换为浮点数。