MATLAB使用小札记(随机看心情更新)

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 KNrM的,
我们预想的是 R 1 m u ( k , : , : ) R1mu(k,:,:) R1mu(k,:,:)得到的结果维度为 N r ∗ M Nr * M NrM
然而实际维度为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

猜你喜欢

转载自blog.csdn.net/qq_45542321/article/details/129859440