gxqcn 发表于 2011-11-16 10:05:45

如何删除MatLab矩阵中偶数行数据?

因工作需要,偶尔需要借用 MatLab 分析数据。

现有一需求,有一个很大矩阵,想对之进行如下操作:隔行删数据,
不知有什么现成函数?或有什么高效的方法?

请了解朋友指点一下,谢谢!

wayne 发表于 2011-11-16 10:19:19

:victory:
可以直接提取的,不用删吧:m(1:2:end,:)

gxqcn 发表于 2011-11-16 10:36:19

谢谢!
因为矩阵很大(行数比较多),所以想隔行保留。
下面的代码是最合适的吗?m = m(1:2:end,:)

wayne 发表于 2011-11-16 10:42:36

3# gxqcn
MATLAB 的矩阵处理效率是很高的.直接提取,只是读的操作,效率很高.

如果要写,即删除,可以直接这样:m(2:2:end,:) =[]我记得我当初处理数字图像的时候,总是留有很多"副本",以便后期的引用.

gxqcn 发表于 2011-11-16 11:42:26

接着再请教一个问题:怎样在删除前,将数据各自累加进其上面那行中去?

G-Spider 发表于 2011-11-16 12:50:21

=size(A);
j=1;
for i=1:2:n
    B(j,:)=A(i,:)+A(i+1,:);
    j=j+1;
end

gxqcn 发表于 2011-11-16 13:04:29

以前没注意到 G-Spider 写的 MatLab 代码也不错的啊,人才!
不知可有什么更简洁的方案?

G-Spider 发表于 2011-11-16 13:28:18

长期没写,有些手生。=size(A);
for i=1:n/2 +1
    B(i,:)=A(i*2-1,:)+A(i*2,:);
end或 (但这破坏了原有数据,不太赞成)=size(A);
for i=1:n/2 +1
    A(i,:)=A(i*2-1,:)+A(i*2,:);
end或许还有更好的做法,以上是我的挫代码。

gxqcn 发表于 2011-11-16 13:38:16

一个“挫”字,让人回想起武汉话。
其实你的代码很漂亮的。

wayne 发表于 2011-11-16 13:39:03

5# gxqcn
查查 cumsum函数
页: [1] 2 3
查看完整版本: 如何删除MatLab矩阵中偶数行数据?