我未能恰当地使用R中的符号矩阵,包括rSymPy和Ryacas。在Matlab中,这很简单。,我正在寻找建议,如何在R中这样做,并得到类似于Matlab的输出。要在Matlab中做到这一点,我需要“符号工具箱”。
在这个例子中,我希望生成一个符号转移概率矩阵"P",即5x5,并且有元素P11,P12,.,P55。然后,我想使用这个矩阵进行乘法(包括它本身和其他矩阵),并可能还执行其他操作。
(1) Matlab -生成符号矩阵-> OK
P = sym('P%d%d', [5 5])
(1) R-得到符号矩阵-> OK
library(rSymPy)
当我们有两个对称矩阵x和y时,矩阵z = xyx在理论上也是对称的。然而,在Matlab中,这并不完全正确:
x = randn(3);
y = randn(3);
x = x*x';
y = x*x';
z = x*y*x;
issymetric(z)
为什么会发生这种事,我能做些什么?因为我不想做
z = .5*(z+z')
堆溢出问题中的所有问题都是令人不满意的。
我在符号表达式的数值计算中遇到了一个问题。为了简化我的问题。我写了以下几行作为示例。
syms a b c d e f
x = [a+b*c+d^e,b+log(c+d);exp(c)*b/c+f,f*c+e^2];
a = 2;
b = 3;
c = 1.5;
d = 1;
e = -2;
f = -1;
fx = eval(x);
X是一个矩阵,其元素是符号表达式。我需要在给定a,b,c,d,e,f的不同值的情况下计算x,才能得到一个数值矩阵。在我的实际程序中,这样的计算需要执行数百万次,并且矩阵x的大小和参数(a,b,...,d)的数量都要大得多。
在Matlab7.1中,我的程序运
我正在使用SVD函数来获取值。在我的Opencv中,我写道
Mat w, u, vt;
SVD::compute(A, w, u, vt);
在与MATLAB进行比较后,u和vt矩阵似乎与MATLAB返回的值不匹配。这些值实际上是匹配的,但有时,U(:1)和VT(:1)会从OpenCV返回的结果中取反。有时,VT元素被取反和翻转。虽然U*VT返回的值与MATLAB相同,但U和VT本身与MATLAB (随机)不同,我不确定是什么导致了这种情况。我使用的是OpenCV 2.4,你能帮我解决这个问题吗?
谢谢。
我在MATLAB中使用进行非交换计算。我创建了一个矩阵,希望将其导出并保存为Excel文件。下面是我的代码:
clear all
clc
syms x
NCvars x
A=[x 2x 3x]
正常情况下,我可以使用xlswrite(filename,A)命令并将矩阵A保存到excel文件中,但我得到的却是错误:
Input data must be a numeric, cell, or logical array.
有没有一种简单的方法可以将NCpoly矩阵A保存到Excel?我不知道通常是否可以更改数据类型以符合xlswrite命令。非常感谢。
我需要在Matlab中创建一个3D数组或矩阵,这是LabVIEW的Mathscript节点支持的。三维数组中的所有值都应该初始化为0,并且沿3维的大小是不同的预计算变量。
我尝试了以下几种方法:X = zeros(a,b,c);,它在Matlab中运行得很好,但是在LabVIEW中,零函数只支持1到2个参数。
然后,我尝试使用for循环创建它:
for i = 1 to c
X(:,:,i) = zeros(a,b);
end
但是,数组索引也不支持3个索引。我知道错误:
“只能指定一个或两个索引参数,例如(1,2)。”
您是否知道如何创建一个3D数组,而不是使用带有3个参数的
我需要一些帮助将MATLAB代码移植到R。
下面是创建协方差矩阵的MATLAB代码,其中Z是由17列27行组成的矩阵。ehat是一个由27行1列组成的向量。
omegahat=zeros(cols(Z),cols(Z));
for i=1:N
omegahat=omegahat+ehat(i)^2*Z(i,:)'*Z(i,:);
end
我如何在R中复制一个for循环,该循环的工作方式类似于这个MATLAB代码?