2016-11-30 67 views
-1

在matlab中将矩阵行数减半的最佳方法是什么?如何在matlab中将矩阵的行数减半?

下面的命令在做什么?

mymatrix = mymatrix(1:2:end,:); 

有没有更好的方法可用?

+0

这可能是最简单的方法,是的。 – Suever

+0

@Suever,这个命令实际上在做什么? – anonymous

+0

你给的命令是保存每隔一行,从第一行开始。所以它会丢掉之间的行。 “最佳”方式取决于丢弃信息具有的价值或角色:这是您想缩小的图像吗?如果是这样,最好在丢弃行之前插入像素值。还有很多其他的方法可以减少行数(例如只取上半部分),所以“最好”的定义是不明确的,直到我们在上下文中知道你想达到的目标为止。 – jez

回答

1

简短的回答这是矩阵mymatrix的第二行从第一个(所有奇数行)开始,是的这可能是最简单的方法。 添加澄清基于评论从@Sardar_Usama

较长版本

end是MATLAB内部命令指的是在给定尺寸的阵列的端部。大致相当于size(var,dim)

所以实际上mymatrix(1:2:end,:)可以重写为mymatrix(1:2:size(mymatrix,1),:)。现在,如果你真的看到1:2:size(mymatrix,1)这些是你正在选择的行。 1, 3, 5, etc。您实际上可以指定您想要的任何行,下面是一些示例。

1:floor(end/2); % first 'half' 
floor(end/2)+1:end; % second 'half' 
1:3:end; % every third element 
1:2:floor(end/2); % every second element in the first 'half' 

添加了floor()以避免奇数长度的问题。在这种情况下,“一半”不完全是一半,而是大致一半。或者ceil()取决于你想如何定义奇数长度的一半。

+0

为什么我不计算行数n,然后选择第n/2行? – anonymous

+0

正确答案是:**除了每秒钟以外的所有行** –

+0

'结束+ 1:结束;'不是下半部分。 '1:end/2;'可能会产生警告,因为'end/2'可能不是一个整数 –