示例函数:x、y均为正整数,x∈[0, 10], y∈[0, 100], z = 3 * y – x, 求z = 0时,x, y的值分别为多少。
画图
首先,需要将,x和y由一维变为二维:
x = 0:10;
y = 0:100;
[x, y] = meshgrid(x, y);
画出z的图形:
z = 3 * y - x;
mesh(x, y, z);
用红色圆圈(‘or’)画出xy的取值点:
hold on;
plot(x.*(z == 0), y.*(z == 0), 'or');
最终图形为:
输出结果
提取z = 0时的逻辑索引:
res = (z == 0);
输出结果:
x_out = x(res);
y_out = y(res);
输出的x_out = [0, 3, 6, 9], y_out = [0, 1, 2, 3]即为结果。
相关知识点
matlab中logical类型(详见MATLAB help),可以提取矩阵中想要的结果,比如提取矩阵A中的奇数:
A = [1 -3 2;
5 4 7;
-8 1 3];
查找模数 mod(A,2),并将其转换为逻辑数组以供进行索引。
L = logical(mod(A,2))
输出结果为:
L = 3x3 logical array
1 1 0
1 0 1
0 1 1
如果 A 为奇数,该数组包含逻辑值 1 (true)。使用 L 作为逻辑索引来选取 A 的奇数元素:
A(L)
输出:
ans = 6×1
1
5
-3
1
7
3
结果是一个包含 A 所有奇数元素的向量。
版权声明:本文为graciacheung原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。