两个matlab小题目,高手们求解答

2024-12-12 22:16:04
推荐回答(2个)
回答1:

% 个人基本信息,请自行修改
Xuehao = '2009301234';
Addr = '北京市海淀区XX大学XX楼XXX房间';
Name = '张三丰';

% 第一题:要求图像横坐标为你的学号,纵坐标为你的地址,标题为你的姓名
% (1)对信号y=sin(314t)+sin(628t)加上白噪声,画出图像
fs = 1000;                           % 采样率
t = 0:1/fs:10-1/fs;                  % 时间轴
y = sin(314*t)+sin(628*t);           % 信号
SNR = 5;                             % 信噪比

% 后面3条语句可以合并为1条:y1 = awgn(y, SNR),但需要通信工具箱的支持
nP = 10^(-SNR/10);                   % 噪声功率
noise = sqrt(nP) * randn(size(y));   % 产生白噪声
y1 = y + noise;                      % 以信噪比添加白噪声

% 绘制信号波形
figure(1), plot(t,y1);
xlabel(Xuehao);
ylabel(Addr);
title(Name);

% (2)进行离散傅立叶变换,并画出傅立叶变换后的频谱图、功率谱图
N = length(t);                       % 信号采样点数
freq = fs/N*(-N/2:N/2-1);            % 建立频率轴
y1_spec = fftshift(fft(y1));         % 信号的频谱

% 绘制信号频谱
figure(2), plot(freq, abs(y1_spec));
xlabel(Xuehao);
ylabel(Addr);
title(Name);

% 绘制信号功率谱
p = abs(y1_spec).^2;                 % 信号的功率谱
figure(3), plot(freq, p);
xlabel(Xuehao);
ylabel(Addr);
title(Name);

% 第二题:用三次多项式拟合,求出表达式的值,画出原数值图与拟合示意图,
% 图的标题设置为你的学号,并测算x为7.5、12时的y值
X = 1:9;
Y = [10.2 14.1 13.9 12.3 10.5 11 12.4 13.5 16];

% 用三次多项式拟合,从效果看差强人意(对本题数据而言,以4-6阶为宜)
n = 3;                        % 多项式阶次
p = polyfit(X, Y, n);         % 多项式拟合
figure(4)
plot(X, Y, 'bo-', X, polyval(p,X), 'r:x');
legend('实验数据', '拟合数据');
title(Xuehao);

% 输出多项式及测算点信息
poly = vpa(poly2sym(p,'x'), 3);
fprintf('\n拟合多项式为:\n   y = %s', char(poly))
y2 = polyval(p, [7.5 12]);
fprintf('\nx为7.5、12时的y测算值分别为%.2f、%.2f\n', y2)

回答2:

第一问
subplot(2,1,1)

ezplot('sin(2*x)')
title('你的单位')
xlabel('姓名');
ylabel('学号')
subplot(2,1,2)
ezplot('sin(x)*cos(2*x)')
title('你的单位')
xlabel('姓名');
ylabel('学号')

第二问
x=1:9;
y=[10.2 14.1 13.9 12.3 10.5 11 12.4 13.5 16];
p=polyfit(x,y,3);
plot(x,y,'r')
y1=polyval(p,x);
hold on
plot(x,y1,'y')
y2=polyval(p,[7.5 12]) %7.5,12时的y值