我正在使用ILNumerics将一些matlab代码转换为c#。
我将如何将一个复数和一个双倍相乘?
简略描述:
在Matlab中:
A=[1 2 3]
i*A*A'返回一个复数。
我如何在ILNumerics中做同样的事情:
ILArray<double> A = ILMath.array(1.0, 2.0, 3.0);
complex B = complex.i * ILMath.multiply(A,A.T);抛出错误:
Operator '*' cannot be applied to operands of type 'ILNumerics.complex' and 'ILNumerics.ILRetArray<double>' 更新
这样做是可行的:
double C = 14.0;
complex D = complex.i * C;但不应该: ILMath.multiply(A,A.T)
还回来14.0?
发布于 2014-05-31 14:42:31
第一步是使数组成为complex值之一:
ILArray<complex> A = ILMath.array((complex)1.0, 2.0, 3.0);剩下的问题--把一个标量乘以一个数组--归结为它的含义。答案是,它是一个数组,其中原始元素的每个元素被乘以标量。
ILArray<complex> B = complex.i * ILMath.multiply(A, A.T);B.ToString()是:
0.00000+1.00000i 0.00000+2.00000i 0.00000+3.00000i 0.00000+2.00000i 0.00000+4.00000i 0.00000+6.00000i 0.00000+3.00000i 0.00000+6.00000i 0.00000+9.00000i
但是,将参数转到multiply,如下所示:
complex B = complex.i * (complex)ILMath.multiply(A.T, A);结果是0+14i,与Matlab中的结果相同。
发布于 2014-05-31 15:10:01
我想这很管用:
ILArray<double> A = ILMath.array(1.0, 2.0, 3.0);
complex B = complex.i * (double)ILMath.multiply(A.T,A);从而返回与Matlab相同的结果。
https://stackoverflow.com/questions/23970492
复制相似问题