您好我是c#的新手,想在一个阵列中合并3个不同的信号。在matlab中合并矢量非常容易,但我必须在c#中创建这个数组 以下代码是在matlab中创建的
PN=[pn_1;pn_2;pn_3];
我在c#中创建了Array并尝试将它们合并到这个创建的数组但是它不起作用我收到了这个错误的消息
" RealNumberSignal'不包含' Union'的定义并没有延伸方法' Union'接受第一个类型' RealNumberSignal'可以找到(你错过了使用指令或汇编引用吗?"
我做的是:
var arr = PN_Zahl_Phase1.Union(PN_Zahl_Phase2).ToArray();
注意我想合并三个向量
Thanx很多
答案 0 :(得分:0)
实现您想要的最简单(不一定是最快)的方法可能是扩展方法Enumerable.Concat<T>(this IEnumerable<T> first, IEnumerable<T> second)
。这将采用任意两个IEnumerable<T>
集合 - 它们也由普通数组实现(double[] : IEnumerable<double>
) - 并连接它们。
double[] phase1, phase2, phase3;
// arrays are allocated and filled
double[] result = phase1.Concat(phase2).Concat(phase3).ToArray();
如果您拥有数组{ 1, 2, 3 }
,则{ 4, 5, 6 }
和{ 7 }
结果将为{ 1, 2, 3, 4, 5, 6, 7 }
。
请注意:Concat
不会更改集合,但会创建一个新集合。因此,第一个Concat
的结果将用作第二个ToArray
的起点。最后,我们致电Concat
,因为IEnumerable<double>
会返回Nx3
。
我希望我的要求是正确的(我不再是MATLAB了)。如果你想创建一个std::unordered_map
二维数组,我将不得不让你失望。 C#并不是一个数学DSL,而是一个通用的编程语言,因此缺乏花哨的矩阵方法。从多个一维数组中烘焙二维数组在C#中比在MATLAB中工作要多得多。