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的数组 而不是像下边一样的结果

第1个回答  2013-06-16
a(b)=sqrt(a(b))
只是改变了 a 中部分元素的值(这个例子里面是4个),a 的其他 5 个元素不变。a 作为3*3矩阵的性质也没有改变
第2个回答  2013-06-16
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的特点吧,具体为什么也不知道,但这也不影响理解和使用吧

本回答被提问者采纳

matlab 问题 a = [1 2 3; 4 5 6; 7 8 9]; b=a>5
a(b)=sqrt(a(b))只是改变了 a 中部分元素的值(这个例子里面是4个),a 的其他 5 个元素不变。a 作为3*3矩阵的性质也没有改变

...a=[1 2 3; 4 5 6; 7,8,9]; b=a>5; a(b)=sqrt(a(b)) a(b)是a的一...
a(b)=sqrt(a(b)) 表示b中为零的位置,a中相应的元素不进行运算,为1的位置进行开方运算,所以结果是 1.0000 2.0000 3.0000 4.0000 5.0000 2.4495 2.6458 2.8284 3.0000

求解MATLAB问题 程序 a=[1 2 3;4 5 6;7 8 9]; b=(a>5); a(b)=(a(b...
matlab的解释是:错误使用 ^ 输入必须为标量和方阵。要按元素进行 POWER 计算,请改用 POWER (.^)。如果要说人话,就是改用“.^”而不用"^"。

在matlab中一组10000的数据怎么选择其中前5000个数据需要怎样编程_百度...
A=[1 2 3 4 5 6 7 8 9]B=A(1:5)运行结果

matlab中 a=[1,2,3;4,5,6;7,8,9] b=a(3:-1:1,1:3) 这个是什么意思
就是b取a的第3、2、1行,所有列,就是b是a上下翻转的矩阵,相当于b=flipud(a)。matlab中的矩阵:求解线性方程组是线性代数课程中的核心内容,而矩阵又在求解线性方程组的过程中扮演着举足轻重的角色。利用科学计算软件MATLAB来演示使用矩阵,同时,也使学生对线性代数的认识更加理性。矩阵的构造:在...

...求数列各行和?例如怎样求[1 2 3;4 5 6;7 8 9]的各行的和?求解...
a=[1 2 3;4 5 6;7 8 9],sum(a,2);%sum(a,1)表示各列的和,sum(a,2)表示各行的和。sum(sum(a))矩阵所有元素的和!

matlab中怎么提取矩阵的一行或者一列数据?
1、首先,打开MATLAB命令行窗口,输入a = [1 2 3; 4 5 6; 7 8 9; 6 4 7]创建一个a矩阵,如下图所示,然后进入下一步。2、其次,完成上述步骤后,输入a(1:2,1:3)以提取矩阵的第1,2行第1到3列,如下图所示,然后进入下一步。3、接着,完成上述步骤后,按Enter键,可以看到...

MATlAB中怎么把一组数据的顺序倒过来?
A_reverse = [5 4 3 2 1];如果需要倒转矩阵中的行或列,则可以指定翻转的维度参数。例如,如果有一个3x3的矩阵B:B = [1 2 3; 4 5 6; 7 8 9];可以使用flip函数将其列倒转:B_reverse = flip(B, 2);则B_reverse的结果为:B_reverse = [3 2 1; 6 5 4; 9 8 7];在上述...

matlab中矩阵的转置怎么表示
在MATLAB中,矩阵的转置操作可以通过简单的符号表示。转置操作通常使用符号`表示,如将矩阵A转置为B,可以写作A`。示例中,给定矩阵A=[1 2 3; 4 5 6; 7 8 9],其转置B可以通过A`命令得到,结果为B=1 4 7 2 5 8 3 6 9。对于复数矩阵Z,其共轭转置使用Z`,非共轭转置则为Z.`或conj(Z...

【matlab】创建矩阵A=[1,2,3;4,5,6;7,8,9],请写出以下语句的结果...
直接运行就可以了:>> A=[1,2,3;4,5,6;7,8,9];>> A1=A(1:2:end)A1 = 1 7 5 3 9>> A2=A([1,2,3],[1,1,1])A2 = 1 1 1 4 4 4 7 7 7>> A3=A<5A3 = 1 1 1 1 0 0 0 0 0>> ...

相似回答