最近做一个老师给的小活,有一些代码上的易错点或者小收获,记录下来。
- MATLAB里共轭转置与转置
a = [1+1j,2+2j];
a'= [1-1j;2-2j]; % ' 表示求共轭转置
a.'= [1+1j;2+2j]; % .' 表示求转置
(这个问题已经错了两次了,事不过三啊qaq
因此,再求信号功率时,可以用如下代码:
sigPow = sig*sig'; % sig是行向量
而不是
sigPow = sig*sig.'; % sig是行向量
- lengend 中加入运行产生的数据
在仿真中,偶尔需要产生很多不同参数不同的数据,参数指需要改变的变量,比如多径瑞利信道和AWGN信道,频偏序列的长度等。在画图时,我希望图片上可以清楚地看到这是对应什么参数的图。此时,就需要用到legend。
这里以最近的仿真代码为例:
%% 画图
seq_type = 'ZC';
file_name = ['CFOest' '_ ' seq_type '.dat'];
a = load(file_name);
b = a(:,6);
c = b(1); % 文件中此列的第一个数值,代表序列长度**
plot(SNR_dB,b(2:end));
xlabel('信噪比(in dB)');
ylabel('最高频偏');
legend([seq_type,num2str(c)]);
其中,c是一个数,我希望在图上显示这张图对应的是多长的ZC序列。数字是不能直接写在legend中的,需要借用num2str,用法如上图。
- 求频偏的代码如下:
cfo_est(n_iter) = angle(x_noise(nn).'*conj(x_noise(nn+Nlength(i))))*360/(2*pi);
在做仿真时,纠结过是否要在求自相关和之后先做平均再求角度。最后发现,是否求平均值不变。很有趣的结论。因为对于一个复数而言,是否乘以一个整数,并不影响它的角度(这是师姐告诉我的,师姐威武