是否可以缩短一个向量形成一个较低的维度?
26日视图(30天)
显示旧的评论
答案(3)
约翰D 'Errico
约15小时前
编辑:约翰D 'Errico
约15小时前
你有两个选择。首先,你可以提取元素。或者你可以删除您想删除的元素。例如:
V =质数(40)
现在,过去4个元素。
n = 4;
%这删除V的元素,你想删除,和这样做
%“就地”,在这个意义上我们不分配一个新的向量。
V(结束+(其它:0))= []
接下来,我们可以决定提取最后n个元素。我就用V的最后版本。
V =(1:结束- n)
在每种情况下,我们可以看到,最后4 V元素从诉就像我说的,你能想到的第二种情况,我提取的元素我想保存,在第一种情况下,我表示我想删除的元素。
1评论
詹姆斯Tursa
约12小时前
编辑:詹姆斯Tursa
约12小时前
澄清,据我所知MATLAB时总是分配新的内存索引分配结果在不同的大小。例如,
> >格式的调试
> > v = 1:10
v =
结构地址= 1 dd33fd5fc0
m = 1
n = 10
公关= 1 dd1e418b20
1 2 3 4 5 6 7 8 9 10
> > v(结束)= []
v =
结构地址= 1 dd33fd7a00
m = 1
n = 9
公关= 1 dd2de51500
1 2 3 4 5 6 7 8 9
您可以看到,即使我们只删除最后一个元素,数据指针公关改变,表明MATLAB分配新的内存,其余的数据副本。也许MATLAB可以更聪明,直接改变了尺寸在这种情况下,因为这只会浪费一个元素的内存,但它没有。删除后的唯一方法元素和保留相同的数据内存块(这是更快因为不涉及数据复制)是通过非官方的侵入变量头和重置尺寸直接通过一个墨西哥人例行公事。这是可能的MATLAB的旧版本,但后来版本的MATLAB隐藏变量从用户的共享数据副本所以即使这不再是可能的。