matlab a = [1 2 3; 4 5 6; 7 8 9]; b=a>5

学习 时间:2026-04-04 21:08:52 阅读:8807
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请问第一个表达式为什么得出的是一个3*3的数组 而不是像下边一样的结果

最佳回答

风中的百合

繁荣的电话

2026-04-04 21:08:52

第一种算法很容易理解 开方也是对a矩阵中的逻辑索引项进行开方,然后把开方后的值赋给对应的a矩阵中逻辑索引项,返回的是 a矩阵
第二种算法关键在于 a(b) 返回的是一个 索引后的列矩阵,对该矩阵开方就返回一个列矩阵
具体看这里:
再问: 还是有点不明白 请问 sqrt(a(b))的结果是列矩阵,a(b)也是一个列矩阵,最后赋值结果为什么不是一个列矩阵呢
再答: sqrt(a(b)),a(b)都是列矩阵,赋值的时候,也是一一对应的,这你明白吧 但是你看,它最后结果是 a = 1。0000 2。0000 3。0000 4。0000 5。0000 2。4495 2。6458 2。8284 3。0000 所以 最后返回的是a 不是a(b) 如果像c语言那样理解的话,赋值语句的值确实应该是 a(b) 但是我想这就是matlab的特点吧,具体为什么也不知道,但这也不影响理解和使用吧

最新回答共有2条回答

  • 昏睡的冬日
    回复
    2026-04-04 21:08:52

    第一种算法很容易理解 开方也是对a矩阵中的逻辑索引项进行开方,然后把开方后的值赋给对应的a矩阵中逻辑索引项,返回的是 a矩阵第二种算法关键在于 a(b) 返回的是一个 索引后的列矩阵,对该矩阵开方就返回一个列矩阵具体看这里: 再问: 还是有点不明白 请问 sqrt(a(b))的结果是列矩阵,a(b)也是一个列矩阵,最后赋值结果为什么不是一个列矩阵呢 再答: sqrt(a(b)),a(b)都是列矩阵,赋值的时候,也是一一对应的,这你明白吧 但是你看,它最后结果是 a = 1。0000 2。0000 3。0000 4。0000 5。0000 2。4495 2。6458 2。8284 3。0000 所以 最后返回的是a 不是a(b) 如果像c语言那样理解的话,赋值语句的值确实应该是 a(b) 但是我想这就是matlab的特点吧,具体为什么也不知道,但这也不影响理解和使用吧

上一篇 【弟子规】诗句中的故事啊快!【比如守孝弟,次谨信的故事.】如果故事好更有60财富等着你!

下一篇 欧派橱柜和科宝博洛尼橱柜相比哪个要好些