在 MATLAB 中根据矩阵内容分割矩阵
矩阵有 m 行和 n 列(n 是不超过 10 的数字),第 n 列包含 1 或 0(二进制)。我想使用这个二进制文件作为取出关联行的决定(如果为 1,否则为 0)。我知道这可以通过使用 IF 条件的迭代来完成。
然而,对于行数 m 达到数百(最多 1000)的矩阵来说,这可能变得不切实际。还有哪些其他程序可用?
A matrix has m rows and n columns (n being a number not exceeding 10), and the nth column contains either 1 or 0 (binary). I want to use this binary as a decision to take out the associated row (if 1, or otherwise if 0). I understand that this can be done through iteration with the use of the IF conditional.
However, this may become impractical with matrices whose number of rows m gets into the hundreds (up to 1000). What other procedures are available?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以使用
逻辑
数据类型用于索引。例如,现在,如果
n
列中的相应元素为 true,则您已将第 2 列中的所有元素设置为 1。请注意,v = (M(:,n) == 1) 会将第 n 列转换为逻辑向量。您可以使用
v =逻辑(M(:,n));
完成相同的任务,我会推荐这个博客条目详细了解逻辑索引。
更新:
如果您想删除行,请使用:
You can use
logical
datatypes for indexing. For example,Now you have set all the elements in column 2 to 1 if the corresponding element in column
n
is true.Note that the
v = (M(:,n) == 1)
converts then
th column to a logical vector. You can accomplish the same withv = logical(M(:,n));
I would recommend this blog entry for a detailed look at logical indexing.
Update:
If you want to erase rows, then use: