当前位置: 首页 > 知识库问答 >
问题:

复杂矩阵操作

冉俊德
2023-03-14

我的数据是这样的,X和Y是缺陷的中心。我想在矩阵中指定缺陷。

defect_ID X Y X_range Y_range
1         2 3  5        0
2         7 12 1        2

我创建了一个只有0的矩阵200*200。我想通过以下方式将1放入矩阵中:

每个坐标X Y都是1。例如,我们可以看到ID 1,它将允许1到坐标(2,3)的单元格。ID 2将允许1进入我的手机(7,12)。

我已经用代码完成了这项工作

img<-matrix(0,200,200)
img[cbind(data[,X],data[,Y])]<-1

现在我想做一些棘手的事情。我defect_ID,我想使用我的X_range和Y_range值将值1分配给这个缺陷周围的所有点。对于1个缺陷,我们取中心(X,Y),并使用X和Y_range移动。

伪码

for defect_ID 1
img[X,Y]<-1
img[X+ 1:X_range,Y]<-1
img[X,Y+1:Y_range]<-1


例如,如果我们看ID 1,我想给点(2,3)、(3,3)、(4,3)、(5,3)、(6,3)、(7,3)赋值1

如果我有X_范围和Y_范围

共有2个答案

萧宣
2023-03-14

这里有一个选择:

data <- tibble(defect_ID=c(1,2),X=c(2,7),Y=c(3,12),X_range=c(5,1),Y_range=c(0,2))

输入数据:

> data
# A tibble: 2 x 5
  defect_ID     X     Y X_range Y_range
      <dbl> <dbl> <dbl>   <dbl>   <dbl>
1         1     2     3       5       0
2         2     7    12       1       2

创建矩阵:

data_mat <- matrix(0,200,200)

分配一个:

for (i in 1:2) { # Change this to the length of your dataset
  data_mat[data[[i,'X']]:data[[i,'X']]+data[[i,'X_range']],data[[i,'Y']]] <- 1
  data_mat[data[[i,'X']],data[[i,'Y']]:data[[i,'Y']]+data[[i,'Y_range']]] <- 1
}

输出:

> data_mat[1:10,1:14]
      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13] [,14]
 [1,]    0    0    0    0    0    0    0    0    0     0     0     0     0     0
 [2,]    0    0    1    0    0    0    0    0    0     0     0     0     0     0
 [3,]    0    0    1    0    0    0    0    0    0     0     0     0     0     0
 [4,]    0    0    1    0    0    0    0    0    0     0     0     0     0     0
 [5,]    0    0    1    0    0    0    0    0    0     0     0     0     0     0
 [6,]    0    0    1    0    0    0    0    0    0     0     0     0     0     0
 [7,]    0    0    1    0    0    0    0    0    0     0     0     1     1     1
 [8,]    0    0    0    0    0    0    0    0    0     0     0     1     0     0
 [9,]    0    0    0    0    0    0    0    0    0     0     0     0     0     0
[10,]    0    0    0    0    0    0    0    0    0     0     0     0     0     0
庄文栋
2023-03-14
img = matrix(0,20,15)
for (i in 1:nrow(data)){
  sx = data$X[i]:(data$X[i]+data$Y_range[i])
  sy = data$Y[i]:(data$Y[i]+data$X_range[i])

  img[sx,sy] = 1
}

这至少应该适用于第一部分。第二个问题我不太清楚。如果范围是奇数呢?我应该选择哪个方向?

 类似资料:
  • 矩阵和魔方 在MATLAB里,矩阵由数字行列构成。有时也指1*1矩阵,它是标量,而一行或一列的矩阵指代向量。MATLAB有另外一些存储数字与非数字数据的方法,但在开始的阶段,最好将一切以矩阵看待。MATLAB内的操作被设计得尽可能接近自然语言。别的程序设计语言以一次处理一个数据,MATLAB则让你简单而快捷地处理一整个矩阵。有一个贯穿此书的很好的例子,它出现在德国的一个艺术家兼业余数学爱好者阿布列

  • 研究了一种算法,该算法需要计算矩阵中连续1的最长数。提供的解决方案描述和解决方案如下: 蛮力方法非常简单。我们直接遍历给定矩阵中的每一条有效线:即水平、垂直、中间对角线上下的对角线、中间反对角线上下的反对角线。每次遍历过程中,如果遇到连续的1,我们会不断增加计数。我们会为遇到的任何不连续重置计数。在这样做的同时,我们还跟踪迄今为止发现的最大计数。 复杂性分析 时间复杂度:O(n^2)我们沿着整个矩

  • 我目前正在做一个音频信号处理项目,需要在Java中的一个复杂矩阵上使用SVD。我当前的线性代数库是Apache Commons。但它只提供实矩阵的SVD,JAMA、JBLAS、EJML、ojAlgo都不支持复杂的SVD。 我一直在用一些技巧从一个等效的实矩阵中找到SVD。然而,当我重建矩阵时,这种技术对于虚部有很大的不准确性。

  • 本文向大家介绍Python中的Numpy矩阵操作,包括了Python中的Numpy矩阵操作的使用技巧和注意事项,需要的朋友参考一下 Numpy 通过观察Python的自有数据类型,我们可以发现Python原生并不提供多维数组的操作,那么为了处理矩阵,就需要使用第三方提供的相关的包。 NumPy 是一个非常优秀的提供矩阵操作的包。NumPy的主要目标,就是提供多维数组,从而实现矩阵操作。 NumPy

  • 着色器语言中通过关键字mat2、mat3、mat4分别声明一个2x2矩阵、3x3矩阵、4x4矩阵,通过内置函数mat2()、mat3()、mat4()分别创建一个2x2矩阵、3x3矩阵、4x4矩阵。 关键字 数据类型 mat2 2x2矩阵,4个元素 mat3 3x3矩阵,9个元素 mat4 4x4矩阵,16个元素 声明变量 关键子mat4声明一个4x4矩阵 mat4 matrix4; 构造函数赋

  • 我不是高级R用户。我主要用它来进行矩阵代数计算。我有一个大矩阵(9400×9400;675.1MB),我想反转。我尝试了“解决”函数和“胆量2inv”,我得到了“错误在......‘a’一定是一个复杂的矩阵”。我也尝试了从MASS包的ginv函数,我得到了错误消息在svd(X)错误:无限或丢失值在'x'。我确信我的矩阵没有空(全零)列或行。我检查了使用:从数据框中删除具有零值的列,我得到了相同的矩