首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

c#数组基本运算?解决方案

2012-05-21 
c#数组基本运算??两个维数相同的数组a,b,要求各元素相加(或减法,乘法,除法),组成新的数组c,可不可以直接c

c#数组基本运算??
两个维数相同的数组a,b,要求各元素相加(或减法,乘法,除法),组成新的数组c,
  可不可以直接c=a+b(类似matlab语言)?还是只能遍历各元素相加??

[解决办法]
遍历吧。
[解决办法]
这个得遍历

C# code
int[] i = {1,2,3,4,5};int[] j = {6,7,8,9,10};int[] k = new int[i.Length];for(int m=0;m<i.Length;m++){    k[m] = i[m] + j[m];}foreach(int n in k){   Response.Write(n.ToString());}
[解决办法]
C# code
int[] a = { 1, 2, 3 };int[] b = { 4, 5, 6 };int[] result = a.Zip(b, (x, y) => x + y).ToArray(); // result = { 5, 7, 9 }
[解决办法]
矩阵运算时一个数学软件包基本的功能,写成简练的表达式是很符合数学家的习惯的——因为跟数学书上的符号一直。

随便写一个重载+号的例子吧。
C# code
    public class Mat    {        public double[,] Datas;        public static Mat operator +(Mat a, Mat b)        {            var result = new Mat { Datas = new double[a.Datas.GetLength(0), b.Datas.GetLength(1)] };            for (var i = 0; i < a.Datas.GetLength(0); i++)                for (var j = 0; j < b.Datas.GetLength(1); j++)                {                    double sum = 0;                    for (var k = 0; k < a.Datas.GetLength(1); k++)                        sum += a.Datas[i, k] * b.Datas[k, j];                    result.Datas[i, j] = sum;                }            return result;        }    } 

热点排行