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的数组 而不是像下边一样的结果 展开
>> 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的数组 而不是像下边一样的结果 展开
2个回答
展开全部
a(b)=sqrt(a(b))
只是改变了 a 中部分元素的值(这个例子里面是4个),a 的其他 5 个元素不变。a 作为3*3矩阵的性质也没有改变
只是改变了 a 中部分元素的值(这个例子里面是4个),a 的其他 5 个元素不变。a 作为3*3矩阵的性质也没有改变
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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
第一种算法很容易理解 开方也是对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的特点吧,具体为什么也不知道,但这也不影响理解和使用吧
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询