1、定义一个4×3的矩阵,除第一行元素为1外,其余元素均为0。
b = ones (1,3); m = zeros (4,3); m(1,:) = b
2、考虑向量对 (x1, y1) 和 (x2, y2)。定义向量 x,使得:当 y1(j) < y2(j) 时,x(j) = 0;当 y1(j) = y2(j) 时,x(j) = x1(j);当 y1(j) > y2(j) 时,x(j) = x2(j)。请编写 MATLAB 代码实现该功能。
可以使用 MATLAB 代码来实现该功能,以下是实现代码:
% 假设 x1, y1, x2, y2 已经定义
x = zeros(size(y1)); % 初始化 x 为全零向量,长度与 y1 相同
idx_equal = y1 == y2; % 找到 y1 等于 y2 的索引
idx_greater = y1 > y2; % 找到 y1 大于 y2 的索引
x(idx_equal) = x1(idx_equal); % 在 y1 等于 y2 的位置,将 x1 对应位置的值赋给 x
x(idx_greater) = x2(idx_greater); % 在 y1 大于 y2 的位置,将 x2 对应位置的值赋给 x
3、生成并绘制信号:对于 0 ≤ t ≤ 2,以 0.01 为增量,y(t) = sin(2πt),然后使用 decimate 函数分别以 2 和 16 为下采样因子对其进行下采样。
t = 0:0.01:2;
y = sin(2*pi*t);
subplot(311);
plot(t,y);
ylabel('sin(2*pi*t)');
title('Original signal');
t2 = decimate(t,2);
t16 = decimate(t2,8);
y2 = decimate(y,2);
y16 = decimate(y2,8);
subplot(312);
plot(t2,y2);
ylabel('sin(2*pi*t)');
title('Undersampled signal with a factor 2');
subplot(313);
plot(t16,y16);
ylabel('sin(2*pi*t)');
xlabel('Time t');
title('Undersampled signal with a factor 16');
print -eps file_name
4、在极坐标中绘制具有以下传递函数的滤波器的极点:$H(z)=\frac{1}{1 + az^{-1}+bz^{-2}}$,其中$a$和$b$的值由用户输入,函数返回极点。(使用 roots 和 polar 命令)
以下是实现该功能的 MATLAB 代码:
function c = filter_bis(a,b)
c = roots([1 a b]);
fprintf('The poles are:\n');
z1 = c(1,:);
z2 = c(2,:);
if (abs(z1) > 1 | abs(z2) > 1)
fprintf('There is at least an instable pole\n');
else
clf;
figure;
polar(angle(z1), abs(z1), 'r+');
hold on;
polar(angle(z2), abs(z2), 'r+');
legend('Polar plot of H(z) poles', 0);
end
end
5、生成信号:x(t) = A⋅sin(2πft + φ) + b(t),其中 t 取值范围是 0 到 1024,φ 是在[0, 2π]上均匀分布的随机变量,b(t) 是均值为零、方差为 1 的高斯白噪声(使用 rand 和 randn 函数)。A 和 f 由用户选择。使用周期图法和相关图法(使用 fft 和 fftshift 函数)估计 x(t) 的均值、自相关函数(xcorr)和频谱。将得到的结果与理论结果进行比较。通过改变 A 来控制信噪比。
以下是实现该功能的 MATLAB 代码:
function noisy_sin(A,f)
N = 1024; % 计算频率的数量
nech = 1024; % 样本数量
t = 0:nech;
b = randn(1,nech+1);
phi = 2*pi*rand(1);
x = A*sin(2*pi*f*t+phi)+b;
fprintf('Mean of x(t) = %2

最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



