【发布时间】:2017-11-12 17:24:17
【问题描述】:
我在 matlab 中有一个矩阵 x,它有 6*n*n*3 行和一列代表 6*n*n 点的 3d 坐标。坐标排列使得第 1:6*n*n 行是 x 坐标,第 6*n*n+1:12*n*n 行是 y 坐标,第 12*n*n+1:18*n* 行n 是 z 坐标。
我想从中构建 2 个新矩阵,一个将给定点的 x、y、z 坐标简单地放在一起,另一个将 i 行与其他点相减。
现在我正在使用双 for 循环来执行此操作,这对于 n>16 来说非常慢。使用 matlab 向量/矩阵功能是否有更好/更快的方法?
这是我当前的代码
x=x(1:6*n*n);
y=y(6*n*n+1:12*n*n);
z=z(12*n*n+1:18*n*n);
N=6*n*n;
points=[];
difs=[];
for i=1:N
difrow=[];
points=[points;x(i) y(i) z(i)];
for j=1:N
deltax=x(i)-x(j);
deltay=y(i)-y(j);
deltaz=z(i)-z(j);
difrow=[difrow deltax deltay deltaz];
end
difs=[difs;difrow];
end
【问题讨论】: