数学研发论坛

 找回密码
 欢迎注册
查看: 11423|回复: 28

[提问] 如何删除MatLab矩阵中偶数行数据?

[复制链接]
发表于 2011-11-16 10:05:45 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?欢迎注册

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

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

请了解朋友指点一下,谢谢!
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2011-11-16 10:19:19 | 显示全部楼层

可以直接提取的,不用删吧:
  1. m(1:2:end,:)
复制代码
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2011-11-16 10:36:19 | 显示全部楼层
谢谢!
因为矩阵很大(行数比较多),所以想隔行保留。
下面的代码是最合适的吗?
  1. m = m(1:2:end,:)
复制代码
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2011-11-16 10:42:36 | 显示全部楼层
3# gxqcn
MATLAB 的矩阵处理效率是很高的.直接提取,只是读的操作,效率很高.

如果要写,即删除,可以直接这样:
  1. m(2:2:end,:) =[]
复制代码
我记得我当初处理数字图像的时候,总是留有很多"副本",以便后期的引用.
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2011-11-16 11:42:26 | 显示全部楼层
接着再请教一个问题:怎样在删除前,将数据各自累加进其上面那行中去?
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2011-11-16 12:50:21 | 显示全部楼层
  1. [m,n]=size(A);
  2. j=1;
  3. for i=1:2:n
  4.     B(j,:)=A(i,:)+A(i+1,:);
  5.     j=j+1;
  6. end
复制代码
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2011-11-16 13:04:29 | 显示全部楼层
以前没注意到 G-Spider 写的 MatLab 代码也不错的啊,人才!
不知可有什么更简洁的方案?
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2011-11-16 13:28:18 | 显示全部楼层
长期没写,有些手生。
  1. [m,n]=size(A);
  2. for i=1:n/2 +1
  3.     B(i,:)=A(i*2-1,:)+A(i*2,:);
  4. end
复制代码
或 (但这破坏了原有数据,不太赞成)
  1. [m,n]=size(A);
  2. for i=1:n/2 +1
  3.     A(i,:)=A(i*2-1,:)+A(i*2,:);
  4. end
复制代码
或许还有更好的做法,以上是我的挫代码。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2011-11-16 13:38:16 | 显示全部楼层
一个“挫”字,让人回想起武汉话。
其实你的代码很漂亮的。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2011-11-16 13:39:03 | 显示全部楼层
5# gxqcn
查查 cumsum函数
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

小黑屋|手机版|数学研发网 ( 苏ICP备07505100号 )

GMT+8, 2019-11-19 12:58 , Processed in 0.182919 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表