重邮+数字信号处理实验七:用 MATLAB 设计 IIR 数字滤波器

一、实验目的

1 、加深对窗函数法设计 FIR 数字滤波器的基本原理的理解。
2 、学习用 Matlab 语言的窗函数法编写设计 FIR 数字滤波器的程序。
3 、了解 Matlab 语言有关窗函数法设计 FIR 数字滤波器的常用函数用法。
4 、掌握 FIR 滤波器的快速卷积实现原理。
5 、不同滤波器的设计方法具有不同的优缺点,因此要全面、客观看待可能
面对或出现的问题。

二、实验任务

1、阅读并输入实验原理中介绍的例题程序,观察输出的数据和图形,结合基本原理理解每一条语句的含义。

2、选择合适的窗函数设计 FIR 数字低通滤波器

要求:ωp=0.24 Rp=0.1dB; ωs=0.3 As=60dB。描绘该滤波器的脉冲响应、窗函数及滤波器的幅频响应曲线和相频响应曲线。

任务二结果示意图

3、调用信号产生函数 xtg 产生具有加性噪声的信号 x(t),并显示信号及其频谱。

程序清单如下:
[xt,t]=xtg(1000);
程序运行结果如下:

4、采用实验内容步骤 2 中设计的 FIR 数字低通滤波器,调用 Matlab 快速卷积函数 fftfilt 实现对 x(t)的滤波,从高频噪声中提取 x(t)中的单频调幅信号。绘图显示滤波器的频率响应特性曲线、滤波器输出信号的幅频特性图和时域波形图。

代码提示略

实验结果如下:

5选做题,读取音频信号 motherland.wav,得到 xn;(1)对 xn 进行 I=2 的整数倍 0 值内插,得到音频信号 yn1;(2)设计一个镜像低通滤波器(可在实 验内容 2 的代码上进行修改);(3)对 yn1 进行滤波,得到音频信号 yn2

① 音频播放:依次播放原音频信号 xn yn1 yn2 ,体验整数倍 0 值内插后的音质。
参考代码:
[xn,fs]=audioread('motherland.wav');% 读取音频信号
sound(xn,fs); % 播放音频信号,
pause(length(xn)/fs); % 暂停执行程序 length(xn)/fs 秒,确保音频播放完。
I=2 % 实现I=2的整数倍0值内插
for i=1:length(xn);
 yn1(I*i-1)=xn(i);
 yn1(I*i)= 0;
end
sound(yn1,I*fs); %采样频率变大了,为 I*fs
② 取原音频某段信号,如 n=8000~8199。画出该段信号模拟域幅度谱(横 坐标为 f Hz);画出该段信号 I=2 内插后的模拟域幅度谱;画出该段信号内插 后再经过镜像滤波后的模拟域幅度谱。
参考代码:
Xn=1/fs*fft(xn(8000:8199),N); % 从xn中取200点做谱分析,N可取2048
plot((0:N/2-1)*fs/N,abs(Xn(1:N/2)));% 模拟域幅度谱
Yn1=1/(I*fs)*fft(yn1(16000:16399),N); % 内插后,200点长变成了400点长
plot((0:N/2-1)*I*fs/N,abs(Yn1(1:N/2)));
yn2=filter(b,1,yn1); % 对yn1进行滤波,b为所设计的镜像滤波器
Yn2=1/(I*fs)*fft(yn2(16000:16399),N); % 内插后,200点长变成了400点长
plot((0:N/2-1)*I*fs/N,abs(Yn2(1:N/2)));

三、思考题

按照如下指标要求设计四种选频数字滤波器,要求画出滤波器的幅频特性、相频特性和幅度衰减曲线,标注相关信息,如横坐标,纵坐标的单位,曲线名称等。(设计方法自己查阅资料完成)

  • (1) 设计数字低通滤波器,指标为:通带截止频率𝜔𝑝 = 0.2𝜋,阻带截止频率𝜔𝑠 = 0.3𝜋,通带衰减𝛼𝑝 = 1𝑑𝐵,阻带衰减𝛼𝑠 = 24𝑑𝐵。
  • (2) 设计数字高通滤波器,指标为:阻带截止频率𝜔𝑠 = 0.4𝜋,通带截止频率𝜔𝑠 = 0.6𝜋,通带衰减𝛼𝑝 = 0.2𝑑𝐵,阻带衰减𝛼𝑠 = 43𝑑𝐵。
  • (3) 设计数字带通滤波器,指标为:通带范围0.2𝜋 ≤ 𝜔 ≤ 0.6𝜋,阻带范围0 ≤𝜔 ≤ 0.15𝜋和0.65𝜋 ≤ 𝜔 ≤ 𝜋,通带衰减𝛼𝑝 = 1𝑑𝐵,阻带衰减𝛼𝑠 = 50𝑑𝐵。
  • (4) 设计数字带阻滤波器,指标为:阻带范围0.2𝜋 ≤ 𝜔 ≤ 0.6𝜋,通带范围0 ≤ 𝜔 ≤ 0.15𝜋和0.65𝜋 ≤ 𝜔 ≤ 𝜋,通带衰减𝛼𝑝 = 1𝑑𝐵,阻带衰减𝛼𝑠 = 45𝑑𝐵。

解答

函数部分

函数一:通过输入wp,ws,n,可以得到b,反复调用,节省时间

function b=filter_test7(wp,ws,n)%n为窗前的系数
deltaw = ws - wp; % 频率带宽差
N0 = ceil(n * pi / deltaw); % 阶数
N = N0 + mod(N0 + 1, 2); % 确保滤波器阶数为奇数

windows = blackman(N); % 使用窗
wc = (ws + wp) / (2 * pi); % 截止频率取归一化通阻带频率的平均值
b = fir1(N-1, wc, windows); 
end

 函数二:生成一个xt方便实用

function [xt,t]=XTG(N)
%xt=xtg产生一个长度为N,有加性高频噪声的单频调幅信号xt,采样频率是1000Hz 
Fs=1000;%采样频率
T=1/Fs;%采样周期,采样间隔
t=0:T:(N-1)*T;
fc=Fs/10; %载波频率100
f0=fc/10; %基带信号频率10
mt=cos(2*pi*f0*t); %单频基带信号
ct=cos(2*pi*fc*t); %载波信号
xt=mt.*ct; %调制,采样
nt=2*rand(1,N)-1; %产生随机噪声
rp=0.1;As=70; %最大衰减,最小衰减
dev=[10^(-As/20),(10^(rp/20)-1)/(10^(rp/20)+1)]; %衰减系数
[n,fo,mo,w] = firpmord([150 200],[0 1],dev,1000 );
hn = firpm(n,fo,mo,w); 
yt=filter(hn,1,10*nt); %滤除高斯白噪声的低频成分生成高通干扰
xt=xt+yt;

主程序

任务一:

%例题2——2
N=64;
beta=7.865;
n=1:N;
wbo=boxcar(N);
wtr=triang(N);
whn=hanning(N);
whm=hamming(N);
wbl=blackman(N);
wka=kaiser(N,beta);
plot(n,wbo,'-',n,wtr,'*',n, whn,'+',n, whm,'.',n,wbl,'o',n,wka,'d');
axis([0,N,0,1.1]);
legend('矩形','三角形','汉宁','哈明','布莱克曼','凯塞')

%例题2——3
wp=0.3*pi;
ws=0.45*pi;
deltaw=ws-wp;
N0=ceil(6.6*pi/deltaw);
N=N0+mod(N0+1,2)%为实现 FIR 类型1偶对称滤波器,应确保 N 为奇数
windows=(hamming(N))';
wc=(ws+wp)/2;
hd=ideal_lp(wc,N);
b=hd.*windows;
[H,w]=freqz(b,1,1000,'whole');
H=(H(1:501))';
w=(w(1:501))';
mag=abs(H);
db=20*log10((mag+eps)/max(mag));
pha=angle(H);
n=0:N-1;
dw=2*pi/1000;
Rp=-(min(db(1:wp/dw+1)))%检验通带波动
As=-round(max(db(ws/dw+1:501)))%检验最小阻带衰减

figure()
subplot(2,2,1);
stem(n,b);
axis([0,N,1.1*min(b),1.1*max(b)]);
title('实际脉冲响应');
xlabel('n');ylabel('h(n)');

subplot(2,2,2);
stem(n,windows);
axis([0,N,0,1.1]);
title('窗函数特性');
xlabel('n');ylabel('wd(n)');

subplot(2,2,3);
plot(w/pi,db);
axis([0,1,-80,10]);
title('幅度频率响应');
xlabel('频率(单位:\pi)');ylabel('H(e^{jomega})');
set(gca,'XTickMode','manual','XTick',[0,wp/pi,ws/pi,1 ]);
set(gca,'YTickMode','manual','YTick',[-50,-20,-3,0]);grid;

subplot(2,2,4);
plot(w/pi,pha);
axis([0,1,-4,4]);
title('相位频率响应');
xlabel('频率(单位:\pi)");ylabel("phi(omega)');
set(gca,'XTickMode','manual','XTick',[0,wp/pi,ws/pi,1]);
set(gca,'YTickMode','manual','YTick',[-3.1416,0,3.1416,4]);grid;

wp=0.3*pi;ws=0.45*pi;
deltaw=ws-wp;
N0=ceil(6.6*pi/deltaw);
N=N0+mod(N0+1,2);%为实现 FIR 类型1偶对称滤波器,应确保 N 为奇数
windows=hamming(N);%使用哈明窗,此句可省略
wc=(ws+wp)/2/pi;%截止频率取归一化通阻带频率的平均值
b=fir1(N-1,wc,windows);%用 firl 函数求系统函数系数,windows 可省略
[H,w]=freqz(b,1,1000,'whole');
H=(H(1:501))';w=(w(1:501))';
mag=abs(H);
db=20*log10((mag+eps)/max(mag));
pha=angle(H);
n=0:N-1;dw=2*pi/1000;
Rp=-(min(db(1:wp/dw+1)));%检验通带波动
As=-round(max(db(ws/dw+1:501)));%检验最小阻带衰减

figure();
subplot(2,2,1);
stem(n,b);
axis([0,N,1.1*min(b),1.1*max(b)]);
title('实际脉冲响应');
xlabel('n');ylabel('h(n)');

subplot(2,2,2);
stem(n,windows);
axis([0,N,0,1.1]);
title('窗函数特性');
xlabel('n');ylabel('wd(n)');

subplot(2,2,3);
plot(w/pi,db);
axis([0,1,-80,10]);
title('幅度频率响应');
xlabel('频率(单位:\pi)');ylabel('H(e^{jomega})');
set(gca,'XTickMode','manual','XTick',[0,wp/pi,ws/pi,1 ]);
set(gca,'YTickMode','manual','YTick',[-50,-20,-3,0]);grid;

subplot(2,2,4);
plot(w/pi,pha);
axis([0,1,-4,4]);
title('相位频率响应');
xlabel('频率(单位:\pi)");ylabel("phi(omega)');
set(gca,'XTickMode','manual','XTick',[0,wp/pi,ws/pi,1]);
set(gca,'YTickMode','manual','YTick',[-3.1416,0,3.1416,4]);grid;

任务二:

%% 指标
wp = 0.24 * pi; % 通带截止频率
ws = 0.3 * pi; % 阻带开始频率
deltaw = ws - wp; % 频率带宽差
N0 = ceil(12* pi / deltaw); % 根据公式计算初始滤波器阶数
N = N0 + mod(N0 + 1, 2); % 确保滤波器阶数为奇数

windows = blackman(N); % 使用窗
wc = (ws + wp) / (2 * pi); % 截止频率取归一化通阻带频率的平均值
b = fir1(N-1, wc, windows); % 设计FIR滤波器

[H, w] = freqz(b, 1, 1000, 'whole'); % 计算频率响应
H = H(1:501)'; % 只取[0, pi]部分
w = w(1:501)';
mag = abs(H);
db = 20 * log10((mag + eps) / max(mag)); % 幅度转换为分贝
pha = angle(H); % 相位响应
n = 0:N-1; % 脉冲响应时间序列
dw = 2 * pi / 1000; % 频率步长
Rp=-(min(db(1:wp/dw+1)));%检验通带波动
As=-round(max(db(ws/dw+1:501)));%检验最小阻带衰减

%绘制图像
figure();
subplot(2, 2, 1);
stem(n, b); % 脉冲响应
axis([0, N-1, 1.1 * min(b), 1.1 * max(b)]);
title('实际脉冲响应');
xlabel('n'); ylabel('h(n)');

subplot(2, 2, 2);
stem(n, windows); % 窗函数特性
axis([0, N-1, 0, 1.1]);
title('窗函数特性');
xlabel('n'); ylabel('w(n)');

subplot(2, 2, 3);
plot(w / pi, db); % 幅度频率响应
axis([0, 1, -80, 10]);
title('幅度频率响应');
xlabel('频率 (单位: \pi)'); ylabel('|H(e^{j\omega})| (dB)');
set(gca, 'XTick', [0, wp/pi, ws/pi, 1]);
set(gca, 'YTick', [-60, -40, -20, 0]); grid on;

subplot(2, 2, 4);
plot(w / pi, pha); % 相位频率响应
axis([0, 1, -4, 4]);
title('相位频率响应');
xlabel('频率 (单位: \pi)'); ylabel('\phi(\omega)');
set(gca, 'XTick', [0, wp/pi, ws/pi, 1]);
set(gca, 'YTick', [-pi, 0, pi]); grid on;

disp(['通带波动 Rp = ', num2str(Rp), ' dB']);
disp(['阻带衰减 As = ', num2str(As), ' dB']);

任务三·:

% 调用 xtg 函数生成加噪声信号
[xt, t] = XTG(1000); % 采样频率为 1000 Hz

% 计算频谱
N = length(xt); % 信号长度
fs = 1000; % 采样频率
X = fft(xt); % 快速傅里叶变换
X_mag = abs(X)/N; % 幅度归一化
f = (0:N-1)*(fs/N); % 频率轴

% 绘制结果
figure();

% 时域波形
subplot(3, 1, 1);
plot(t, xt);
title('信号加噪声波形');
xlabel('t/s');
ylabel('x(t)');
xlim([0 0.2]); % 修改横坐标范围
grid on;

% 信号加噪声的频谱
subplot(3, 1, 2);
plot(f, X_mag);
title('信号加噪声的频谱');
xlabel('f/Hz');
ylabel('幅度');
xlim([0 fs/2]);
grid on;

% 信号加噪声的频谱 (50-150 Hz)
subplot(3, 1, 3);
plot(f, X_mag);
title('信号加噪声的频谱 (50-150 Hz)');
xlabel('f/Hz');
ylabel('幅度');
xlim([50 150]); % 修改横坐标范围为 50-150
xticks(50:10:150); % 设置刻度间隔为 10
grid on;

任务四:

% 参数设置 
wp = 0.24 * pi; % 通带截止频率 
ws = 0.3 * pi; % 阻带开始频率 
n = 12; % 用于计算滤波器阶数的系数 
fs = 1000; % 采样频率 

[xt, t] = XTG(fs); % 采样频率为 1000 Hz
b =filter_test7(wp,ws,n);
yt=fftfilt(b,xt);
Hyk=abs(fft(yt));

% 计算滤波器的频率响应 
[H, f] = freqz(b, 1, 1024, 'whole'); % 计算频率响应 
% 绘图 
figure; 

% 1. 绘制滤波器的频率响应特性 
subplot(2, 2, 1); 
plot(f * fs / (2 * pi), 20*log10(abs(H)), 'LineWidth', 2); % dB scale 
title('FIR 滤波器的频率响应特性'); 
xlabel('频率 (Hz)'); 
ylabel('幅度 (dB)'); 
grid on; 

% 时域波形图 
subplot(2, 2, 2); 
plot(t, yt, 'b'); % 滤波后信号 
title('滤波后信号时域波形'); 
xlabel('时间 (秒)'); 
ylabel('幅度'); 
grid on; 

% 幅频特性图 
subplot(2, 2, 3); 
stem(Hyk); 
title('滤波器输出信号的幅频特性'); 
xlabel('频率 (Hz)'); 
ylabel('幅度'); 
axis([80,120,min(Hyk),max(Hyk)]); 
grid on; 

任务五:

% 读取音频信号
[xn, Fs] = audioread('motherland.wav'); 
sound(xn, Fs); 
%pause(length(xn)/Fs); 


I = 2; % 插值倍数
yn1 = zeros(I * length(xn), 1); % 插值后的信号初始化
for i = 1:length(xn)
yn1(I*i-1)=xn(i);
yn1(I*i)=0;
end
sound(yn1, I * Fs); 
%pause(length(yn1)/(I * Fs)); 

% 对原始信号和插值信号进行频谱分析
N = 2048; 
Xn = 1/Fs*fft(xn(8000:8199), N); 
Yn1 = 1/(I*Fs) * fft(yn1(16000:16399), N); % 插值信号对应频段做频谱分析

% 绘制原始信号和插值信号的频谱
figure;
subplot(3, 1, 1);
plot((0:N/2-1)*(Fs/N), abs(Xn(1:N/2)));
title('原始信号频谱');
xlabel('频率 (Hz)');
ylabel('幅度');

subplot(3, 1, 2);
plot((0:N/2-1)*(I*Fs/N), abs(Yn1(1:N/2)));
title('插值信号频谱');
xlabel('频率 (Hz)');
ylabel('幅度');

% 设计镜像低通滤波器对插值信号进行滤波
b = filter_test7(0.24*pi,0.3*pi,11);
yn2 =filter(b, 1, yn1); % 滤波后的信号
sound(yn2, I * Fs); % 播放滤波后的信号


% 频谱分析滤波后的信号
Yn2 = abs(1/Fs * fft(yn2(16000:16399), N)); % 滤波后插值信号频谱

% 绘制滤波后插值信号的频谱
subplot(3, 1, 3);
plot((0:N/2-1)*(I*Fs/N), Yn2(1:N/2));
title('滤波后的插值信号频谱');
xlabel('频率 (Hz)');
ylabel('幅度');

思考题

Fs = 1; 

% 低通滤波器设计
%参数
wp = 0.2; % 通带截止频率 (归一化)
ws = 0.3; % 阻带开始频率 (归一化)
dp = 1 - 10^(-1/20); % 通带波动 1dB
ds = 10^(-24/20); % 阻带衰减 24dB
N = firpmord([wp, ws], [1, 0], [dp, ds]); % 估算滤波器阶数
b_lowpass = firpm(N, [0 wp ws 1], [1 1 0 0]); % FIR设计

% 绘制低通滤波器曲线
figure('Name', '低通滤波器特性');
subplot(2, 2, 1);
stem(b_lowpass, 'filled');
title('低通滤波器冲激响应 h(n)');
xlabel('样本点 n'); ylabel('幅度');

subplot(2, 2, 2);
[H, w] = freqz(b_lowpass, 1, 1024);
plot(w/pi, abs(H));
title('低通滤波器幅频特性曲线');
xlabel('归一化频率 (\times\pi)'); ylabel('幅度');

subplot(2, 2, 3);
plot(w/pi, 20*log10(abs(H)));
title('低通滤波器幅频衰减特性');
xlabel('归一化频率 (\times\pi)'); ylabel('衰减 (dB)');

subplot(2, 2, 4);
plot(w/pi, angle(H));
title('低通滤波器相频特性曲线');
xlabel('归一化频率 (\times\pi)'); ylabel('相位 (弧度)');

%高通滤波器设计
%参数
ws = 0.4; 
wp = 0.6; 
dp = 1 - 10^(-0.2/20); % 0.2dB
ds = 10^(-43/20); % 43dB
N = firpmord([ws, wp], [0, 1], [ds, dp]); % 估算滤波器阶数
b_highpass = firpm(N, [0 ws wp 1], [0 0 1 1]); 

% 绘制高通滤波器曲线
figure('Name', '高通滤波器特性');
subplot(2, 2, 1);
stem(b_highpass, 'filled');
title('高通滤波器冲激响应 h(n)');
xlabel('样本点 n'); ylabel('幅度');

subplot(2, 2, 2);
[H, w] = freqz(b_highpass, 1, 1024);
plot(w/pi, abs(H));
title('高通滤波器幅频特性曲线');
xlabel('归一化频率 (\times\pi)'); ylabel('幅度');

subplot(2, 2, 3);
plot(w/pi, 20*log10(abs(H)));
title('高通滤波器幅频衰减特性');
xlabel('归一化频率 (\times\pi)'); ylabel('衰减 (dB)');

subplot(2, 2, 4);
plot(w/pi, angle(H));
title('高通滤波器相频特性曲线');
xlabel('归一化频率 (\times\pi)'); ylabel('相位 (弧度)');

%带通滤波器设计
%参数
wp1 = 0.2; wp2 = 0.6;
ws1 = 0.15; ws2 = 0.65; 
dp = 1 - 10^(-1/20); % 1dB
ds = 10^(-50/20); % 50dB
N = firpmord([ws1 wp1 wp2 ws2], [0 1 0], [ds dp ds]); % 估算阶数
b_bandpass = firpm(N, [0 ws1 wp1 wp2 ws2 1], [0 0 1 1 0 0]); 

% 绘制带通滤波器曲线
figure('Name', '带通滤波器特性');
subplot(2, 2, 1);
stem(b_bandpass, 'filled');
title('带通滤波器冲激响应 h(n)');
xlabel('样本点 n'); ylabel('幅度');

subplot(2, 2, 2);
[H, w] = freqz(b_bandpass, 1, 1024);
plot(w/pi, abs(H));
title('带通滤波器幅频特性曲线');
xlabel('归一化频率 (\times\pi)'); ylabel('幅度');

subplot(2, 2, 3);
plot(w/pi, 20*log10(abs(H)));
title('带通滤波器幅频衰减特性');
xlabel('归一化频率 (\times\pi)'); ylabel('衰减 (dB)');

subplot(2, 2, 4);
plot(w/pi, angle(H));
title('带通滤波器相频特性曲线');
xlabel('归一化频率 (\times\pi)'); ylabel('相位 (弧度)');

%带阻滤波器设计
%参数
ws1 = 0.2; ws2 = 0.6; 
wp1 = 0.15; wp2 = 0.65; 
dp = 1 - 10^(-1/20); % 1dB
ds = 10^(-45/20); % 45dB
N = firpmord([wp1 ws1 ws2 wp2], [1 0 1], [dp ds dp]); % 估算滤波器阶数
b_bandstop = firpm(N, [0 wp1 ws1 ws2 wp2 1], [1 1 0 0 1 1]); 

% 绘制带阻滤波器曲线
figure('Name', '带阻滤波器特性');
subplot(2, 2, 1);
stem(b_bandstop, 'filled');
title('带阻滤波器冲激响应 h(n)');
xlabel('样本点 n'); ylabel('幅度');

subplot(2, 2, 2);
[H, w] = freqz(b_bandstop, 1, 1024);
plot(w/pi, abs(H));
title('带阻滤波器幅频特性曲线');
xlabel('归一化频率 (\times\pi)'); ylabel('幅度');

subplot(2, 2, 3);
plot(w/pi, 20*log10(abs(H)));
title('带阻滤波器幅频衰减特性');
xlabel('归一化频率 (\times\pi)'); ylabel('衰减 (dB)');

subplot(2, 2, 4);
plot(w/pi, angle(H));
title('带阻滤波器相频特性曲线');
xlabel('归一化频率 (\times\pi)'); ylabel('相位 (弧度)');

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/953288.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

73.矩阵置零 python

矩阵置零 题目题目描述示例 1:示例 2:提示: 题解思路分析Python 实现代码代码解释提交结果 题目 题目描述 给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 示例…

Chromium 132 编译指南 Windows 篇 - 配置核心环境变量 (三)

1. 引言 在之前的 Chromium 编译指南系列文章中,我们已经完成了编译前的准备工作以及 depot_tools 工具的安装与配置。本篇我们将聚焦于 Chromium 编译过程中至关重要的环境变量设置,这些配置是您顺利进行 Chromium 构建的基石。 2. 启用本地编译&…

C++中线程同步与互斥的4种方式介绍、对比、场景举例

在C中,当两个或更多的线程需要访问共享数据时,就会出现线程安全问题。这是因为,如果没有适当的同步机制,一个线程可能在另一个线程还没有完成对数据的修改就开始访问数据,这将导致数据的不一致性和程序的不可预测性。为…

【dockerros2】ROS2节点通信:docker容器之间/docker容器与宿主机之间

🌀 一个中大型ROS项目常需要各个人员分别完成特定的功能,而后再组合部署,而各人员完成的功能常常依赖于一定的环境,而我们很难确保这些环境之间不会相互冲突,特别是涉及深度学习环境时。这就给团队项目的部署落地带来了…

【2025最新】100%通过的计算机毕设新题目

五个类别的计算机毕业设计题目10个,需要更多新鲜题目请私信博主。 类别一:人工智能与机器学习 题目1:基于深度学习的图像识别系统 内容解释:开发一个使用深度学习技术的图像识别系统,能够识别并分类各种物体、场景…

[DO374] Ansible 配置文件

[DO374] Ansible 配置文件 1. 配置文件位置2. 配置文件3. Ansible 配置4. Ansible的Ad-hoc5. Ansible 模块6. playbook段落7. 任务执行后续8. Ansible 变量8.1 ansible 变量的定义8.1.1 主机变量8.1.2 主机组变量 8.2 vars的循环 9. Ansible Collection10. Ansible-galaxy 安装…

CMake构建C#工程(protobuf)

工程目录结构 第一级CMakeLists.txt cmake_minimum_required(VERSION 3.0.0) # 指定为csharp工程 project(CSharpDemo CSharp) # 添加二级目录 add_subdirectory(src) 第二级CMakeLists.txt cmake_minimum_required(VERSION 3.0.0) project(CSharpDemo CSharp)# 指定protoc…

全栈面试(一)Basic/微服务

文章目录 项目地址一、Basic InterviewQuestions1. tell me about yourself?2. tell me about a time when you had to solve a complex code problem?3. tell me a situation that you persuade someone at work?4. tell me a about a confict with a teammate and how you…

专题 - STM32

基础 基础知识 STM所有产品线(列举型号): STM产品的3内核架构(列举ARM芯片架构): STM32的3开发方式: STM32的5开发工具和套件: 若要在电脑上直接硬件级调试STM32设备,则…

容器技术全面攻略:Docker的硬核玩法

文章背景 想象一下,一个项目终于要上线了,结果因为环境配置不一致,测试服务器一切正常,生产环境却宕机了。这是开发者噩梦的开始,也是Docker救世主角色的登场!Docker的出现颠覆了传统环境配置的方式&#…

【论文阅读】Workload Dependent Performance Evaluation of the Linux 2.6 I/O Schedulers

文章目录 某些背景知识的科普(依赖GPT)GPT简短总结摘要-Abstract引言-Introduction1 I/O Scheduling and the BIO LayerThe 2.6 Deadline I/O Scheduler2.1 The 2.6 Anticipatory I/O scheduler2.2 The 2.6 CFQ Scheduler2.3 The 2.6 noop I/O scheduler…

LLMBook 中 数据集下载地址整理收集

本文针对《LLMBook》大语言模型 | LLMBook-zh 中的42个数据集进行完整下载地址整理收集。 具体整理部分关于第三章 大型语言模型资源 1、常用预训练24个数据集下载地址整理收集 2、指令微调18个数据集下载地址整理收集 3、人类对齐8个数据集下载地址整理收集 《大语言模型》…

http和https有哪些不同

http和https有哪些不同 1.数据传输的安全性:http非加密,https加密 2.端口号:http默认80端口,https默认443端口 3.性能:http基于tcp三次握手建立连接,https在tcp三次握手后还有TLS协议的四次握手确认加密…

LabVIEW滤波器功能

程序通过LabVIEW生成一个带噪声的正弦波信号,并利用滤波器对其进行信号提取。具体来说,它生成一个正弦波信号,叠加高频噪声后形成带噪信号,再通过低通滤波器滤除噪声,提取原始正弦波信号。整个过程展示了信号生成、噪声…

基于华为atlas的重车(满载)空车(空载)识别

该教程主要是想摸索出华为atlas的基于ACL的推理模式。最终实现通过煤矿磅道上方的摄像头,识别出车辆的重车(满载)、空车(空载)情况。本质上是一个简单的检测问题。 但是整体探索过程比较坎坷,Tianxiaomo的…

pytest+allure 入门

使用allure如何生成自动化测试报​​​​​​告 ?一文详解allure的使用 。_allure测试报告-CSDN博客 例子: import allure import pytest import osallure.epic("闹钟") allure.feature("闹钟增删") class TestSchedule():def setu…

excel VBA 基础教程

这里写目录标题 快捷键选择所有有内容的地方 调试VBA录制宏,打开VBA开发工具录制宏,相当于excel自动写代码(两个表格内容完全一致才可以) 查看宏代码保持含有宏程序的文件xlsm后缀(注意很容易有病毒)宏文件安全设置 使…

Excel数据叠加生成新DataFrame:操作指南与案例

目录 一、准备工作 二、读取Excel文件 三、数据叠加 四、处理重复数据(可选) 五、保存新DataFrame到Excel文件 六、案例演示 七、注意事项 八、总结 在日常数据处理工作中,我们经常需要将不同Excel文档中的数据整合到一个新的DataFra…

Django创建数据表、模型、ORM操作

1、创建项目 django-admin startproject PersonInfosProject 2、创建项目应用,进入PersonInfosProject文件夹,新建index应用,使用命令 cd PersonInfosProject python manage.py startapp 新建完成之后的目录结构 3、新建数据模型&#xf…

ZYNQ初识10(zynq_7010)UART通信实验

基于bi站正点原子讲解视频: 系统框图(基于串口的数据回环)如下: 以下,是串口接收端的波形图,系统时钟和波特率时钟不同,为异步时钟,,需要先延时两拍,将时钟同…