Tag: 矩阵

将矩阵作为函数中的参数传递

我一直在尝试编写一个函数,它给出了元素为0的行和列的索引。我尝试使用函数 void make_zero(int matrix[][],int row,int col) { int row, col; int i,j; for(i=0;i<row;i++) { for(j=0;j<col;j++) { if(matrix[i][j]==0){ printf("%d %d\n", i, j); } } } 但在编译时它会给出错误“错误:数组类型具有不完整的元素类型”。 我还尝试全局声明矩阵并给它一个指针。 但它对我不起作用。 帮助我解决这个问题,我们如何将矩阵传递给C中的函数。

OpenCV图像arrays,4D矩阵

我试图将IPL_DEPTH_8U ,3通道图像存储到一个数组中,以便我可以在内存中存储100个图像。 为了初始化我的4D数组,我使用了以下代码(行,列,通道,存储): int size[] = { 324, 576, 3, 100 }; CvMatND* cvImageBucket; = cvCreateMatND(3, size, CV_8U); 然后我创建了一个矩阵并将图像转换为矩阵 CvMat *matImage = cvCreateMat(Image->height,Image->width,CV_8UC3 ); cvConvert(Image, matImage ); 我如何/访问CvMatND将CvMat复制到存储位置? 例如cvImageBucket(:,:,:,0) = matImage; // copied first image into array cvImageBucket(:,:,:,0) = matImage; // copied first image into array

在结构C中初始化变量矩阵

我在C中的结构中初始化变量矩阵时遇到了麻烦。已经阅读了几篇post( post )但我似乎无法修复它。 不要问我为什么,但是对于一项任务,我需要初始化一个位于结构中的矩阵。 我的结构代码是: typedef struct maze{ int row; int column; char matrix[row][column]; }maze; 通过调用不同的函数,在读取某个文件后,我需要通过给定的参数初始化矩阵,因此2个参数为“row”和“column”。 我的init函数代码是: struct maze* init_maze(int row, int column) { struct maze mazeFilled; struct maze *mazePointer; mazeFilled.row = row; mazeFilled.column = column; return mazePointer; } 但是你可以猜测这不起作用,人们已经提到很难用2个变量创建一个矩阵。 任何人都可以解释我做错了什么。 编辑1: 我根据结构更改了我的代码,但结构保持不变。 我需要分配指针,以便它甚至在独家新闻之外保持活跃状态​​。 我的init函数的新代码是: struct maze* init_maze(void) { int row = 6; int column […]

搜索字符矩阵中的特定单词

我试图通过C搜索字符矩阵中的特定单词,但无法找到固定的解决方案。 例如:假设我必须在字符矩阵中搜索单词INTELLIGENT (3 * 9)(一旦你从矩阵中选择一个字符形成一个句子,你就不能再选择它来形成同一个句子。有从任何小区到其所有相邻小区的路径。邻居可以共享边缘或角落。) IIIINN.LI …. TTEGL ….. NELI 输出:是(可以找到智能这个词)任何人都可以解决上述问题!!!!

在C中执行具有复数的矩阵运算

我正在尝试执行涉及矩阵运算和复杂数学的计算 – 有时在C中。我非常熟悉Matlab,我知道这些类型的计算可以简单有效地执行。 例如,相同大小的两个矩阵A和B,每个都具有复数值的元素,可以通过表达式A + B容易地求和。 是否有任何软件包或技术可以建议在C或Objective C中使用这些类型的表达式编程? 我知道complex.h允许对复数执行操作,但我不知道如何在复杂矩阵上执行操作,这就是我真正想要的。 同样,我知道允许对矩阵进行操作的包,但不认为它们在处理复杂矩阵时会有用。

为什么有必要将列数作为函数参数传递?

当我在函数的参数中传递矩阵时,使用括号,我也需要传递列数。 为什么? #include //int function(int matrix[][5]){ //Will work int function(int matrix[][]){ //Won’t work return matrix[0][0]; } int main(){ int matrix[5][5]; matrix[0][0] = 42; printf(“%d”, function(matrix)); } gcc错误: prog.c:3:18: error: array type has incomplete element type int function(int matrix[][]){ ^ prog.c: In function ‘main’: prog.c:10:5: error: type of formal parameter 1 is incomplete printf(“%d”, function(matrix)); ^ […]

将动态分配的数组作为参数传递给C语言

所以…我在我的主要上有一个动态分配的数组: int main() { int *array; int len; array = (int *) malloc(len * sizeof(int)); … return EXIT_SUCCESS; } 我还想构建一个函数,用这个动态分配的数组做一些事情。 到目前为止我的function是: void myFunction(int array[], …) { array[position] = value; } 如果我将其声明为: void myFunction(int *array, …); 我还能做到: array[position] = value; 或者我必须这样做: *array[position] = value; …? 此外,如果我正在使用动态分配的矩阵,哪一个是声明函数原型的正确方法: void myFunction(int matrix[][], …); 要么 void myFunction(int **matrix, …); …?

你如何在矩阵中交换两行(在C中)?

例如,给定一个矩阵: 1 2 3 4 5 6 7 8 9 如果你是goint交换行[0]和行[1],结果矩阵将是: 4 5 6 1 2 3 7 8 9 你们能帮助我在C中获取代码吗?

连接2个矩阵

我有一个动态分配的矩阵,我想创建另一个,这是第一个矩阵,但旁边有另一个副本。 例如,我有矩阵: 11 22 我的新矩阵将是: 1 1 1 1 2 2 2 2 我该如何连接它们? 这是我在C中的代码: #include #include #include int **create_matrix(int row, int col) { int **matrix = malloc(sizeof (int*)*row); int i; for (i = 0; i < row; i++) { matrix[i] = malloc(sizeof (int)*col); } return matrix; } void matrix_input(int **matrix, int row, int col) […]

正确的方法将numpy.matrix转换为C双指针

将numpy矩阵作为参数传递给C函数采用双指针的规范方法是什么? 上下文 :我使用numpyvalidation一些C代码 – 我有一个C函数,它接受const double ** const ,我使用ctypes从Python调用.so 。 我试过了: func.argtypes = ctypeslib.ndpointer(dtype=double, ndim=2, flags=”C_CONTIGUOUS”) 直接传递numpy矩阵(不起作用),以及 func.argtypes = ctypes.POINTER(ctypes.POINTER(ctypes.c_double)) 然后通过各种演员numpy传递numpy矩阵。 Casting导致了Python错误 TypeError: _type_ must have storage info 注意 :这个问题在几年前出现在这里 ,但没有完全成功的解决方案。