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/08/11 12:43:27
![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请问第一个表达式](/uploads/image/z/1697094-54-4.jpg?t=matlab+a+%3D+%5B1+2+3%3B+4+5+6%3B+7+8+9%5D%3B+b%3Da%3E5%E5%A6%82%E6%9E%9C%E8%BF%99%E6%A0%B7%E8%BF%90%E8%A1%8C%3E%3E+a%28b%29%3Dsqrt%28a%28b%29%29a+%3D1.0000+2.0000+3.00004.0000+5.0000+2.44952.6458+2.8284+3.0000%E6%88%91%E5%B0%86%E5%B7%A6%E5%8F%B3%E4%B8%A4%E4%B8%AA%E5%8D%95%E7%8B%AC%E8%BF%90%E8%A1%8C%3E%3E+a%28b%29ans+%3D7869%3E%3E+sqrt%28a%28b%29%29ans+%3D2.64582.82842.44953.0000%E8%AF%B7%E9%97%AE%E7%AC%AC%E4%B8%80%E4%B8%AA%E8%A1%A8%E8%BE%BE%E5%BC%8F)
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) 返回的是一个 索引后的列矩阵,对该矩阵开方就返回一个列矩阵
具体看这里: