matlab a = [1 2 3; 4 5 6; 7 8 9]; b=a>5如果这样运行>> a(b)=sqrt(a(b))a =1.0000 2.0000 3.00004.0000 5.0000 2.44952.6458 2.8284 3.0000我将左右两个单独运行>> a(b)ans =7869>> sqrt(a(b))ans =2.64582.82842.44953.0000请问第一个表达式

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/05 16:02:51

matlab a = [1 2 3; 4 5 6; 7 8 9]; b=a>5如果这样运行>> a(b)=sqrt(a(b))a =1.0000 2.0000 3.00004.0000 5.0000 2.44952.6458 2.8284 3.0000我将左右两个单独运行>> a(b)ans =7869>> sqrt(a(b))ans =2.64582.82842.44953.0000请问第一个表达式
matlab a = [1 2 3; 4 5 6; 7 8 9]; b=a>5
如果这样运行
>> a(b)=sqrt(a(b))
a =
1.0000 2.0000 3.0000
4.0000 5.0000 2.4495
2.6458 2.8284 3.0000
我将左右两个单独运行
>> a(b)
ans =
7
8
6
9
>> sqrt(a(b))
ans =
2.6458
2.8284
2.4495
3.0000
请问第一个表达式为什么得出的是一个3*3的数组 而不是像下边一样的结果

matlab a = [1 2 3; 4 5 6; 7 8 9]; b=a>5如果这样运行>> a(b)=sqrt(a(b))a =1.0000 2.0000 3.00004.0000 5.0000 2.44952.6458 2.8284 3.0000我将左右两个单独运行>> a(b)ans =7869>> sqrt(a(b))ans =2.64582.82842.44953.0000请问第一个表达式
第一种算法很容易理解 开方也是对a矩阵中的逻辑索引项进行开方,然后把开方后的值赋给对应的a矩阵中逻辑索引项,返回的是 a矩阵
第二种算法关键在于 a(b) 返回的是一个 索引后的列矩阵,对该矩阵开方就返回一个列矩阵
具体看这里: