首页 文章

MATLAB:如何更改线性增加列结构的值

提问于
浏览 943
1

我的问题是关于线性地改变矩阵中的值 . 我有一个594x1183矩阵,每个单元格的值为10.我想将矩阵中的某些部分更改为其他值(见下图) . 在实线框中,我有一个值为10的矩阵 . 在仪表板框中,我希望值为-16 .

image

如您所见,从第1019列到结束(1183),值应为-16 . 对于行54至182,这也适用于列1020(结束)到列1054(结束) .

我可以用Excel手动(耗时)或者为每一行做一个循环(128个循环,也很费时) . 我认为必须有一种更快的方法来解决这个问题 .

所以基本上,对于第一行(1),列1019到矩阵的末尾(列1183)应该具有值-16(在第一行第1列到第1018行中它具有值10和从1019到1183它的值为-16) . 然后在下一行,列1020到矩阵(1183)的末尾也应该具有-16的值(在第二行,第1列到第1019列,它具有10的值)....重复这一点到因此,在第1行到第1053行的最后一行,它的值为10,而从1054到1183,它的值为-16 .

1 回答

  • 2

    您可以通过meshgrid创建一个坐标系,并使用它来使不等式使用数组的逻辑索引 .

    y = 594;
    x=1183;
    x0 = 1054;
    x1 = 1019;
    y0 = 54;
    y1 = 182;
    A = 10*ones(y,x);
    [X,Y]=meshgrid(1:x,1:y);
    A( Y >= y1*(X-x0)/(x1-x0) + y0*(x1-X)/(x1-x0) & Y <= y1 & Y >= y0 ) = -16;
    

    您可以使用 spy(A) 命令检查它 .

相关问题