Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
|
![]() |
#1 |
高级会员
注册日期: 2019-11-21
帖子: 3,006
声望力: 66 ![]() |
![]()
我有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 ,然后将点插入矩阵中的给定位置。 更多&回答... |
![]() |
![]() |