我有MATLAB代码将n维点(n> 1)插入矩阵( myPointMatrix )中,并且正在考虑如何插入第一个点。
现在,程序在插入点之前检查myPointMatrix的大小。如果为1x1, myPointMatrix设置为等于当前点。否则,将附加当前点。 if -statement仅一次为真,但是每次插入一个点时都会对其进行评估,这种情况非常常见。
删除if并尝试附加到myPointMatrix可以使MATLAB抱怨矩阵尺寸不一致。同时删除if -statement和myPointMatrix = 0的初始化都将导致MATLAB查找未定义的myPointMatrix 。也可以理解。
如何初始化myPointMatrix以便可以删除if -statement?还是有其他智能解决方案?
myPointMatrix = 0; for x=0:limit for y=0:limit for z=0:limit tempPoint = [xyz]; if (length(myPointMatrix) == 1) myPointMatrix = tempPoint; else myPointMatrix = [myPointMatrix; tempPoint]; end end end end
回答:
使用myPointMatrix = [];初始化矩阵。
myPointMatrix越大,附加速度myPointMatrix慢。它变得越来越慢,因为每当您添加一个点时,matlab都会分配一个新大小的新矩阵,并将信息从旧矩阵+新点复制到新矩阵中。
然后最好用其最终大小初始化MyPointMatrix ,然后将点插入矩阵中的给定位置。
更多&回答...