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

时间:2016-01-25 09:58:20

标签: matlab matrix

我的问题是关于线性地改变矩阵中的值。我有一个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 个答案:

答案 0 :(得分: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)命令检查它。