如何以更有效的方式创建/索引此矩阵?

时间:2018-07-27 03:36:12

标签: matlab matrix matrix-indexing

我编写了可以正常工作的MATLAB代码,但我想以一种更有效的方式编写它(我不想重复自己,而是想使其干燥)。

首先,我创建一个由(28 * 8)组成的矩阵,然后将其某些元素更改为减元素。

代码如下:

a=ones(28,8);
for i=1:7
    j=1;
    a(i,j)=-1;
end
for i=8:13
    j=2;
    a(i,j)=-1;
end
for i=14:18
    j=3;
    a(i,j)=-1;
end
for i=19:22
    j=4;
    a(i,j)=-1;
end
for i=23:25
    j=5;
    a(i,j)=-1;
end
for i=26:27
    j=6;
    a(i,j)=-1;
end
for i=28:28
    j=7;
    a(i,j)=-1;
end

1 个答案:

答案 0 :(得分:2)

所有这些代码实际上都可以简化为一行:

<a-entity geometry="primitive: plane" id="Port1" material="shader: flat; src: #port-up; opacity: 1; transparent: true;" position="-0.0864061363986284 1.8001253687779366 13.368669972030895" rotation="0 45 0" scale="0.4 0.4 0.5"></a-entity>

工作原理:上面的解决方案首先创建{7}的7乘8矩阵,然后减去ones的7乘8矩阵(主对角线)乘以2。这给出了一个矩阵,其中主对角线上有一个负数。然后,它使用identity matrix将每行的第一行复制为7,第二行复制为6,依此类推。

a = repelem(ones(7, 8)-2.*eye(7, 8), 7:-1:1, 1);