Matlab中符号函数的元素明智评估

叶夫根尼

我有一个符号表达向量和一个点向量。然后,我想获得一个向量,其中第一个元素是在第一个点求值的第一个符号函数,第二个是第二个点在第二个点的第二个函数的值,依此类推。我可以使用“ for”循环执行此操作

>> syms x
>> f=formula([x, x^2, x^3]);
>> a=[1, 2, 3];
>> ans=zeros(1,3);
>> for i=1:3
z(x)=f(i);
ans(i)=z(a(i));
end
>> ans
ans =
     1     4    27

但是有办法避免循环吗?某种基于元素的评估?

提前致谢!

雷瑞恩

假设我们必须使用符号数学工具箱,这是对您的问题的另一个答案。首先,按常规创建公式:

syms x
f = formula([x, x^2, x^3);

然后,您可以使用subs替换所需的值xsubs具有如下语法:

out = subs(f, val);

val可以是您希望用公式替换变量的单个值,向量或值矩阵。如果要使用向量,将其指定为列向量很重要稍后您会看到原因。

其背后的症结在于,对于x您要用于替换的每个值,它将用替换整个公式x换句话说,如果您这样做了out = subs(f, [1;2;3]);,这将输出一个矩阵,其中第一行包含x=1,下一行包含,x=2最后一行包含x=3如果您这样做了out = subs(f,[1 2 3]);,这将为您提供一个9 x 1向量,其中三个三个的每个都是该特定x的输出

这并不是您想要的,但是当您将输入指定为列向量作为输出时,您可以简单地选择对角线上的所有元素,因为这将使i'th元素中的元素与i'th公式完全对应

换一种说法:

A = (1:3).';
out = subs(f, A)

out =

[ 1, 1,  1]
[ 2, 4,  8]
[ 3, 9, 27]

finalOut = diag(out)

finalOut =

  1
  4
 27

实际上,这是我无需使用for循环即可看到此内容的唯一方法请记住,这仅适用于单个向量。如果您希望使用实际double值而不是将其表示为sym,则需要使用强制转换输出double()

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在函数中评估Knuth的箭头符号

来自分类Dev

评估Matlab符号功能

来自分类Dev

评估Matlab符号功能

来自分类Dev

符号在Matlab函数中的意义

来自分类Dev

在Matlab中构造符号函数

来自分类Dev

在MATLAB匿名函数中强制评估变量

来自分类Dev

如何在Matlab中评估数学函数?

来自分类Dev

在MATLAB中评估常量匿名函数

来自分类Dev

Matlab评估函数

来自分类Dev

Matlab中函数的符号表示法

来自分类Dev

MATLAB矩阵元素明智的乘法优化

来自分类Dev

Matlab:元素明智的复共轭转置?

来自分类Dev

使用MATLAB的符号工具箱使用向量评估向量函数

来自分类Dev

MATLAB中函数数组的矢量化或单行评估

来自分类Dev

评估函数中数组元素的绝对值

来自分类Dev

Matlab符号函数怀疑

来自分类Dev

Matlab,符号函数,

来自分类Dev

Matlab符号函数怀疑

来自分类Dev

使用符号矩阵进行Matlab评估

来自分类Dev

Matlab符号代数未完全评估

来自分类Dev

在MATLAB数组中显示正元素的正符号?

来自分类Dev

在MATLAB中评估符号表达式时除以零误差

来自分类Dev

Theano中的元素明智矩阵乘法

来自分类Dev

Rcpp中的元素明智矩阵乘法

来自分类Dev

python中对嵌套元组的元素明智操作

来自分类Dev

检查Scala列表中的元素明智条件

来自分类Dev

Theano中的元素明智矩阵乘法

来自分类Dev

spark rdd中的元素明智添加

来自分类Dev

函数中的评估范围