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请问第一个表达式
xSr@}ub!0@^"\kK e t-Jն:8XIB /\ ~M)xo.v=9KcQl̂* 2ϳPJ^=>?M5]c/Y ux$"(5RT -)ί^ѣ >3YuqV i-|*9%@!H)U*_Dc9wH+"JUkJ;CՋ" C%Q$O!3uN~w$1'0m٬ ܬ=gܳ.#͚hz.^seev]gÎ?iSBm~56/B#G.>[b}Asƽc풺oʔ1VN1jf'DVEׅN֐ns( I i#d >(Hs UwGx O4/-=H7H

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) 返回的是一个 索引后的列矩阵,对该矩阵开方就返回一个列矩阵
具体看这里: