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

如果这样运行>>a(b)=sqrt(a(b))a=1.00002.00003.00004.00005.00002.44952.64582.82843.0000我将左右两个... 如果这样运行
>> 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的数组 而不是像下边一样的结果
展开
 我来答
mjfconan
2013-06-16 · TA获得超过4187个赞
知道大有可为答主
回答量:2239
采纳率:59%
帮助的人:1094万
展开全部
a(b)=sqrt(a(b))
只是改变了 a 中部分元素的值(这个例子里面是4个),a 的其他 5 个元素不变。a 作为3*3矩阵的性质也没有改变
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
349516385
2013-06-16 · 超过35用户采纳过TA的回答
知道小有建树答主
回答量:152
采纳率:0%
帮助的人:115万
展开全部
http://zhidao.baidu.com/question/287521535.html

第一种算法很容易理解 开方也是对a矩阵中的逻辑索引项进行开方,然后把开方后的值赋给对应的a矩阵中逻辑索引项,返回的是 a矩阵
第二种算法关键在于 a(b) 返回的是一个 索引后的列矩阵,对该矩阵开方就返回一个列矩阵

具体看这里:
http://blog.163.com/yinhexiwen@126/blog/static/64048266201221235634263/
http://zhidao.baidu.com/question/287521535.html
追问
还是有点不明白 请问 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的特点吧,具体为什么也不知道,但这也不影响理解和使用吧
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式