MATLAB中如何将符号函数元胞数组转换为符号函数数组?
MATLAB中符号函数元胞数组转符号数组的实现方法
问题核心
你需要将符号函数的元胞数组转换为符号类型的普通数组,不需要使用double(它会尝试将符号转为数值,而未赋值的符号变量无法完成这个转换,这是之前方法无效的原因)。
可行实现方式
方法1:直接展开元胞构造符号数组
利用元胞数组的展开语法{:},直接用方括号构造符号数组:
syms x F = {3*x, 2*x, x}; % 生成行向量符号数组 G = [F{:}]; % 若需要列向量,添加转置操作 G_col = [F{:}].';
执行后G的类型为sym数组,内容就是[3*x, 2*x, x],完全符合需求。
方法2:使用cell2mat函数
MATLAB的cell2mat函数支持将符号类型的元胞数组转换为普通符号数组:
syms x F = {3*x, 2*x, x}; G = cell2mat(F);
该方法和方法1效果一致,同样会生成行向量的符号数组。
为什么之前的方法无效
double(F):double无法直接处理元胞数组,且元胞内是未赋值的符号变量,无法转换为数值,因此报错。double([F{:}]).':[F{:}]会先构造出符号数组,但double试图将未赋值的符号表达式转为数值,必然失败(返回NaN或报错),这不是你需要的符号数组结果。
内容的提问来源于stack exchange,提问作者Jonathan Frutschy
相关产品推荐
相关产品推荐

