关于matlab矩阵乘法的问题

指令是
>>A=magic(3)
>>B=round(rand(3)*10)

B=
10 5 5
2 9 0
6 8 8

>>C=A*B

C=
118 97 88
82 116 71
70 117 36

帮忙解释一下B指令和C指令,数据是怎么出来的

【1】B
>> rand(3)

ans =

0.9501 0.4860 0.4565
0.2311 0.8913 0.0185
0.6068 0.7621 0.8214

rand(3)就是产生一个3×3的0~1之间的随机数矩阵,乘以10,扩大10倍,
9.5013 4.8598 4.5647
2.3114 8.9130 0.1850
6.0684 7.6210 8.2141

round取整数:
10 5 5
2 9 0
6 8 8

【2】A
>> A=magic(3)

A =

8 1 6
3 5 7
4 9 2

【3】>>C=A*B 就是两个矩阵相乘啦,即

| 8 1 6|| 10 5 5|
| 3 5 7|| 2 9 0|
| 4 9 2|| 6 8 8|
温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-02-02
这个就要根据你的需求了,matlab中矩阵相乘有两种,一种是点乘,即A.*B,还有一种是直接乘,即A*B。点乘是两个矩阵之间对应坐标之间的元素相乘,而直接乘,就是按照矩阵乘法的法则里计算的。
给出源代码如下:
>>
syms
x
y
>>
A=[cos(x)
0
sin(x);0
1
0;-sin(x)
0
cos(x)];
>>
B=[cos(y)
sin(y)
0;-sin(y)
cos(y)
0;0
0
1];
>>
C1=A.*B;
>>
C2=A*B;
>>
C1
C1
=
[cos(y)
cos(x)
0
0
]
[
]
[
0
cos(y)
0
]
[
]
[
0
0
cos(x)]
>>
C2
C2
=
[cos(y)
cos(x)
cos(x)
sin(y)
sin(x)]
[
]
[
-sin(y)
cos(y)
0
]
[
]
[-sin(x)
cos(y)
-sin(x)
sin(y)
cos(x)]
第2个回答  2019-06-17
奇怪,我也试了,把它转成double就可以,uint8就不行,不过我得到的出错信息是Matrix
dimensions
must
agree.
你转成double型计算吧,本来uint8做乘法就不可靠,可能会溢出。
以上。
专业路过的老狼
相似回答