我有一个类型为" sym"的六个值的向量(但它可以是无限长的)。在这种情况下,向量具有数字和变量(所有类sym)。
a=[0.6 ; x_1; 0; 0; x_2; 0]
我想写一个算法,可以判断(1)=数字,a(1)= 0或a(1)=变量。
但如果x_1
和x_2
是符号变量,则数组a
及其所有元素将自动为符号,即class(a(1))
将返回'sym'
(来自@horchler)。
答案 0 :(得分:2)
如果x_1
和x_2
是符号变量,则数组a
及其所有元素将自动为符号,即class(a(1))
将返回'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
将符号值转换为浮点值。