Math 计算矩阵中的元素数
我在解决编程中的一个问题,我有一个矩阵,给定两个位置,我需要找到中间的元素,包括给定的元素 例如,一个有1000行1000列的矩阵,初始位置是[499499],最终位置是[500500],元素数是4Math 计算矩阵中的元素数,math,matrix,Math,Matrix,我在解决编程中的一个问题,我有一个矩阵,给定两个位置,我需要找到中间的元素,包括给定的元素 例如,一个有1000行1000列的矩阵,初始位置是[499499],最终位置是[500500],元素数是4 我想知道是否有任何数学公式可以应用于任何矩阵很好地得到元素的数量,它将是(500-499+1)*(500-499+1)或(x2-x1+1)*(y2-y1+1),可以用于可能的内存分配,具体取决于您使用的编程语言。然后,为了访问矩阵的元素,您可以创建一个使用提供的值计算的矩阵,并返回该矩阵 Matri
我想知道是否有任何数学公式可以应用于任何矩阵很好地得到元素的数量,它将是
(500-499+1)*(500-499+1)
或(x2-x1+1)*(y2-y1+1)
,可以用于可能的内存分配,具体取决于您使用的编程语言。然后,为了访问矩阵的元素,您可以创建一个使用提供的值计算的矩阵,并返回该矩阵
Matrix getSubMatrix(Matrix matrix, int x1, int y1, int x2, int y2) {
// This is assuming matrixes can be created this way
// x2-x1+1 and y2-y1+1 should provide the correct dimensions for the values
// to be extracted from the provided matrix
Matrix submatrix = new Matrix(x2-x1+1, y2-y1+1);
// Now we will itterate through both dimensions of the original matrix
// and the new matrix
for (int i = 0; i < x2-x1+1; i++) {
for (int j = 0; j < y2-y1+1; j++) {
// The new matrix can be accessed with i and j, but the original matrix
// requires the offset of x1 and y1
subMatrix[i][j] = matrix[i+x1][j+y1];
}
}
return submatrix;
}
矩阵getSubMatrix(矩阵,int-x1,int-y1,int-x2,int-y2){
//这是假设可以通过这种方式创建矩阵
//x2-x1+1和y2-y1+1应提供正确的数值尺寸
//从提供的矩阵中提取
矩阵子矩阵x=新矩阵(x2-x1+1,y2-y1+1);
//现在我们将通过原始矩阵的两个维度来计算
//还有新矩阵
对于(int i=0;i
请注意,对于输入参数和返回值,也可以使用数组而不是对象。他的回答也是如此
正如所指出的那样,在
x1>x2
或y1>y2
的情况下,要解决这个问题,而不是假设x1
和y1
。您可以将方法中的x1
替换为min(x1,x2)
,x2
替换为max(x1,x2)
,对于y1和y2
也可以使用两个循环:
int[][] matrix = new int[1000][1000];
populateMatrix(matrix); // populate the matrix with some values, somehow
int pos_1_X = 499;
int pos_1_Y = 499;
int pos_2_X = 500;
int pos_2_Y = 500;
int numElements = 0;
for(int x = pos_1_X; x <= pos_2_X; x++) {
for(int y = pos_1_Y; y <= pos_2_Y; y++) {
numElements++; // increment the counter
System.out.printf("matrix[%d][%d] = %d", x, y, matrix[x][y]); // print the element
}
}
System.out.println("Number of elements: " + numElements);
int[][]矩阵=新的int[1000][1000];
人口矩阵(矩阵);//以某种方式用一些值填充矩阵
int pos_1_X=499;
int pos_1_Y=499;
int pos_2_X=500;
int pos_2_Y=500;
整数=0;
对于(int x=pos_1_x;x编程过程实际上与数学公式不是一回事。形式上的区别在于编程过程包含if语句,而数学公式不包含if语句。你可以很容易地将矩阵的子集转移到另一个较小的矩阵,确切的细节因语言而异。我认为你也应该这样做当x1
但y1>y2
时,您当前的元素总数公式和代码处理不好。如果我有一个3乘3的矩阵,并且我输入参数a[1][3],a[3][3],则公式看起来不正确。答案应该是7个元素,但通过此计算,我只得到3个[[1,1],[2,1],[3,1] ; [1,2] , [2,2] , [3,2] ; [1,3] , [2,3] , [3,3] ]
根据您的规范,它只打印最后一个索引为3的元素,因为我们将原始矩阵分割为所有元素的子矩阵,第一个索引从1到3
,第二个索引为3
。子矩阵将总共包含3个元素。我很清楚,我不是在寻找程序为了解决这个问题,我想知道是否有一个数学表达式可以用于计算任何给定的矩阵。我不知道如何回答你的问题,对不起。:)