MFP编程语言对于数组和矩阵的支持:

    MFP支持数组矩阵操作。数组是由一列元素组成,元素之间由“,”分割开,整列元素由“[”和“]”所包围。考虑以下例子:[1, 2, 3+i],[[1, 2, 3+i]]和[[4, 5], [sqrt(8.9), -i], [1.71, stdev(2,3,4)]]。在这些例子中,[1, 2, 3+i]是包含3个元素的一维向量(也是数组), [[1, 2, 3+i]]是1*3的数组而[[4, 5], [sqrt(8.9), -i], [1.71, stdev(2,3,4)]]是3*2的数组。

    为存取数组中的元素,编程人员需要使用索引。索引是由一列由“[”和“]”所包围的正整数所组成。例如,考虑一个数组变量a等于[[4, 5], [sqrt(8.9), -i], [1.71, stdev(2,3,4)]],那么a[2,0]就是1.71,a[1]就是[sqrt(8.9), -i],注意索引值都是从0开始。考虑另外一个例子,假设变量b是[1, 2, 3+i],那么b[2]等于3+i,但b[0,2]则不合法。

    从版本1.0.3开始,MFP语言能够支持矩阵的加,减,乘,除和转秩。比如,[[1, 2], [3, 4], [5, 6]] + [[2, 3], [4, 5], [6, 7]] = [[3, 5], [7, 9], [11, 13]](矩阵加法),[[2, 3], [4, 5]] * 2 = [[4, 6], [8, 10]](矩阵乘法),[1, 2] * [[3, 4]] = [11](矩阵乘法),[[5,6],[7,8]]/[[1,2],[3,4]] = [[-1, 2], [-2, 3]](矩阵除法)和[[2,3], [4, 5]]' = [[2,4], [3, 5]](矩阵转秩)。注意在矩阵加减法中矩阵的维度必须相同,在矩阵乘法中,第一个操作数的最后一维的长度必须第二个操作数的第一维的长度。矩阵除法必须保证除数和被除数为同尺寸方阵。

    不同于Matlab,MFP不支持在对矩阵元素赋值时自动改变矩阵的尺寸和维度。比如,假设一个数组变量a是[1,2],那么语句a[1]=3是合法的但语句a[2]=3或者a[0,1]=3是非法的(因为超过了数组的尺寸和维度)。幸运的是,MFP有很多内建的和预定义的函数,使用这些函数能够访问和修改甚至超过矩阵尺寸和维度的矩阵元素。这样一来,使用者可以调用这些函数来增加矩阵的尺寸和维度。