我有一个在 MatLab 中创建的 10 X 10 矩阵 A。矩阵中的所有值都在 0 到 100 之间。假设我要:
- 用零替换 A < 10 的所有元素
- 将 A > 90 的所有元素替换为无穷大
- 将 30 到 50 之间的所有值提取到新向量。
我可以在不编写脚本的情况下做到这一点吗?我可以通过带有一些简单 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) 删除第二列。