【发布时间】:2012-04-24 18:51:41
【问题描述】:
我有一个在 MatLab 中创建的 10 X 10 矩阵 A。矩阵中的所有值都在 0 到 100 之间。假设我要:
- 用零替换 A
- 将 A > 90 的所有元素替换为无穷大
- 将 30 到 50 之间的所有值提取到一个新向量中。
我可以在不编写脚本的情况下做到这一点吗?我可以通过带有一些简单 for 循环的脚本轻松做到这一点,但是有没有可用的快捷方式?任何帮助将不胜感激!
【问题讨论】:
我有一个在 MatLab 中创建的 10 X 10 矩阵 A。矩阵中的所有值都在 0 到 100 之间。假设我要:
我可以在不编写脚本的情况下做到这一点吗?我可以通过带有一些简单 for 循环的脚本轻松做到这一点,但是有没有可用的快捷方式?任何帮助将不胜感激!
【问题讨论】:
所有这些事情都非常容易使用逻辑索引来完成:
上面的每一个操作都可以很容易地使用一个或两个命令来完成。但是,每个操作都必须独立于其他两个操作来完成。您不能在一行中完成所有 3 个操作。
1.
smallIdx = A<10;
A(smallIdx) = 0;
% One Line Version
A(A<10) = 0;
2.
bigIdx = A>90;
A(bigIdx)=inf;
% One Line Version
A(A>90) = inf;
3.
middleIdx = A>30 & A<50;
newVector = A(middleIdx);
% One Line Version
newVector = A(A>30 & A<50);
新向量是一个向量,不会像 A 那样是正方形的
【讨论】:
设置任意 3 × 3 矩阵 a.编写一些命令行语句来执行以下操作 对 a 的操作: (a) 交换第 2 栏和第 3 栏; (b) 添加第四列(0); (c) 插入一行1作为a的新的第二行(即移动当前的第二行和第三行 向下); (d) 删除第二列。
【讨论】: