Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#快速矩阵运算_C#_Matlab_Loops_Matrix - Fatal编程技术网

C#快速矩阵运算

C#快速矩阵运算,c#,matlab,loops,matrix,C#,Matlab,Loops,Matrix,在C#中有这样一个矩阵 我希望能够像Matlab一样快速地处理它的内容。特别是,在Matlab中使用以下代码: for i = 1:N M(i, 1:i) = 1; 我希望在C#中有它的等价项,而不需要第二个循环。我不确定这一点,但据我所知,Matlab对这一行m(I,1:I)=1使用了一个称为矢量化的过程,这比我实现从1到I的for循环(将每个单元格设置为1)要快。也许我错了,请纠正我 那么如何在C#中像Matlab一样实现矩阵的快速操作呢 一个常见的解决方案是使用矩阵库,如矩阵运算

在C#中有这样一个矩阵

我希望能够像Matlab一样快速地处理它的内容。特别是,在Matlab中使用以下代码:

for i = 1:N
    M(i, 1:i) = 1;
我希望在C#中有它的等价项,而不需要第二个循环。我不确定这一点,但据我所知,Matlab对这一行
m(I,1:I)=1
使用了一个称为矢量化的过程,这比我实现从1到I的for循环(将每个单元格设置为1)要快。也许我错了,请纠正我


那么如何在C#中像Matlab一样实现矩阵的快速操作呢

一个常见的解决方案是使用矩阵库,如矩阵运算。

hm,我明白了。。。我认为有一些更简单的方法可以绕过for循环,这是C#native库已经具备的。这个库会使这行M(i,1:i)=1比for循环快吗?或者更适合于提供多个方便的小算法,并使代码语法更抽象。这些包中的大多数都是用C或Fortran编写的库的包装器。如果我正确阅读了这些文档,那么对于底层线性代数引擎,您有三种选择:GotoBLAS、Intel MKL或AMD ACML。戈布拉斯是非商业性的。MKL是商业化的,但它的特点是它是英特尔处理器上速度最快的矩阵库。我发现了这个免责声明:我在同一页上读到:)。谢谢你,我认为这种方法会为我的问题找到正确的答案。。。在没有for循环的情况下,写这行M(i,1:i)=1的语法是什么:(?我希望这看起来是正确的…M.SetSubMatrix(i,1,M.Dense(1,i,1));其中M.Dense创建一个包含1行、i列的矩阵,所有列的值都为1
for i = 1:N
    M(i, 1:i) = 1;