查看单个帖子
旧 2019-12-10, 16:49   #1
poster
高级会员
 
注册日期: 2019-11-21
帖子: 3,006
声望力: 66
poster 正向着好的方向发展
帖子 将向量附加到空的MATLAB矩阵

我有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 ,然后将点插入矩阵中的给定位置。



更多&回答...
poster 当前离线   回复时引用此帖