1 MATLAB中的矩阵拼接以及英文论文中的矩阵拼接
具体论文中
[ a , a ] [ a , a ] [a,a]和 [ a a ] [ a a ] [aa]中间加逗号和不加逗号没区别(存疑)
matlab中
用[]做拼接时,有三种连接符:逗号(,),空格 ,分号(;)。
逗号(,)和空格等价,表示不换行,直接横向拼接,横向拼接要求两个矩阵行数相同;
分号(;)表示换行后纵向拼接,纵向拼接要求两个拼接的矩阵的列数相同。
横向拼接
A = zeros(4,2)
B = ones(4,1)
C = [A B]
A =
0 0
0 0
0 0
0 0
B =
1
1
1
1
C =
0 0 1
0 0 1
0 0 1
0 0 1
纵向拼接
A = zeros(3,4)
B = ones(2,4)
C = [A;B]
A =
0 0 0 0
0 0 0 0
0 0 0 0
B =
1 1 1 1
1 1 1 1
C =
0 0 0 0
0 0 0 0
0 0 0 0
1 1 1 1
1 1 1 1
[zeros(1,10);zeros(1,10)]
该种方式是行拼接,得到的维度是 2 * 10
[zeros(1,10),zeros(1,10)]
该种方式是列拼接,结果的维度是1 * 20
2
将.fig图保存为.mat数据存到本地的方法,就是在框里选’文件’—>‘保存工作区’
即可弹出如下界面
3
有一个问题就是:
sumR2GGR2 = zeros(M,M);
for k = 1:K
sumR2GGR2 = sumR2GGR2 + R2mu(k,:,:)' * Gmu(k,:,:)'* Gmu(k,:,:) * R2mu(k,:,:);
end
假设这里R1mu是维度为 K ∗ N r ∗ M K * Nr * M K∗Nr∗M的,
我们预想的是 R 1 m u ( k , : , : ) R1mu(k,:,:) R1mu(k,:,:)得到的结果维度为 N r ∗ M Nr * M Nr∗M
然而实际维度为1 * Nr * M,这就导致报错,因此需要使用squeeze函数
修改为如下即是正确的:
sumR1GGR1 = zeros(M,M);
for k = 1:K
sumR1GGR1 = sumR1GGR1 + squeeze(R1mu(k,:,:))' * squeeze(Gmu(k,:,:))'* squeeze(Gmu(k,:,:)) * squeeze(R1mu(k,:,:));
end