首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ILNumerics乘复数与matrix<double>

ILNumerics乘复数与matrix<double>
EN

Stack Overflow用户
提问于 2014-05-31 13:14:14
回答 2查看 506关注 0票数 2

我正在使用ILNumerics将一些matlab代码转换为c#。

我将如何将一个复数和一个双倍相乘?

简略描述:

在Matlab中:

代码语言:javascript
复制
A=[1 2 3] 
i*A*A'

返回一个复数。

我如何在ILNumerics中做同样的事情:

代码语言:javascript
复制
        ILArray<double> A = ILMath.array(1.0, 2.0, 3.0);
        complex B = complex.i * ILMath.multiply(A,A.T);

抛出错误:

代码语言:javascript
复制
Operator '*' cannot be applied to operands of type 'ILNumerics.complex' and 'ILNumerics.ILRetArray<double>' 

更新

这样做是可行的:

代码语言:javascript
复制
        double C = 14.0;
        complex D = complex.i * C;

但不应该: ILMath.multiply(A,A.T)

还回来14.0?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-05-31 14:42:31

第一步是使数组成为complex值之一:

代码语言:javascript
复制
ILArray<complex> A = ILMath.array((complex)1.0, 2.0, 3.0);

剩下的问题--把一个标量乘以一个数组--归结为它的含义。答案是,它是一个数组,其中原始元素的每个元素被乘以标量。

代码语言:javascript
复制
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,如下所示:

代码语言:javascript
复制
complex B = complex.i * (complex)ILMath.multiply(A.T, A);

结果是0+14i,与Matlab中的结果相同。

票数 3
EN

Stack Overflow用户

发布于 2014-05-31 15:10:01

我想这很管用:

代码语言:javascript
复制
 ILArray<double> A = ILMath.array(1.0, 2.0, 3.0);
 complex B = complex.i * (double)ILMath.multiply(A.T,A);

从而返回与Matlab相同的结果。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23970492

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档