




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、0目录目录一、同类产品概况.1二、设计原理与实现方法.11.界面设计.12.回调函数编程.2三、本软件的特点.91.操作简洁明了.92.丰富的功能.93.设置了坐标轴调整功能.10四、致谢.10五、参考文献.10对于本课程的感受和建议对于本课程的感受和建议.111一、同类产品概况一、同类产品概况均衡器是一种可以分别调节各种频率成分电信号放大量的电子设备,通过对各种不同频率的电信号的调节来补偿扬声器和声场的缺陷,补偿和修饰各种声源及其它特殊作用,一般调音台上的均衡器仅能对高频、中频、低频三段频率电信号分别进行调节。均衡器分为三类:图示均衡器,参量均衡器和房间均衡器。运用数字滤波器组成的均衡器称为
2、数字均衡器,数字均衡器即可作成图示eq,有可做成参量 eq,还可以做成两者兼有的 eq,它不仅各项性能指标优异,操作方便,而且还可同时储存多种用途的频响均衡特性,供不同节目要求选用,可多至储存 99 种频响特性曲线。1千千静听的十段均衡器如图 1 所示:图 1.千千静听的十段均衡器二、设计原理与实现方法二、设计原理与实现方法本音频信号均衡器通过使用 mathworks 公司的 matlab 软件中的 guide 工具快速可视化的编辑界面,2信号的采集和输入、音频信号的频谱分析以及滤波和均衡调节都是通过回调函数调用 matlab 自带函数来实现的,如:wavread函数、wavrecord 函数
3、、fft 函数以及反 fft 变换函数 ifft 等。软件界面具体如图2 所示:1.界面设计界面设计2图 2. 数字均衡界面 通过界面可以看出本软件主要分为三块区域,左上方为音频信号输入区,右上方为波形显示区,软件的下半部分则是信号处理区。在音频信号输入区能够实现 3 种音频信号输入方式,分别问音频信号输入、麦克风输入和信号发生器输入。在软件读入音频信号后可以点击原声播放显示原音频文件的时域波形,点击频域分析则能够对信号进行频域分析并画出频域波形。对于声音调节部分可以分为两块,左边的是均衡器调节,右边的是滤波器处理。均衡器采用 8 段均衡的方式调节音频信号对应频段的幅值,通过选择调节指数则能够
4、改变增益的上下限。点击确认调整后就能在右边的坐标系内分别作出时域和频域图形,点击播放文件则能够听到调整后的音频。滤波器需要选择滤波器的类型,还要选择滤波器的阶数,点击滤波后会在 axes3 上看到滤波器的形状并对音频信号进行滤波处理,点击播放文件就能够听到滤波后的效果了。2.回调函数编程回调函数编程首先为了避免用户误操作,继承前面频谱分析仪的作法,采用一组set(handles.xx,enable,off);语句限制用户的操作步骤,初始化后的界面如图 3所示:3图 3. 初始化后的界面 由于此次的操作比频谱分析的操作更加复杂,为了避免犯还未读取音频信号便滤波之类的错误,需要设置一些指引的语句。
5、同样的也是通过set(handles.xx,enable,on);语句来实现引导功能,比如在“原声播放”按键的回调函数里写入一组使“滤波” “播放文件”可操作的语句,这样就能避免以上问题了。此次设计与以往相比的一个区别就是设置了从音频文件读取信号,主要实现方式是使用 wavread 函数来实现的,具体实现语句如下:filename, pathname = uigetfile(*.wav, please chose an wave-file);%打开一个标题为please chose an wave-file 的打开对话框并将文件名存入filenamehandles.y handles.fs b
6、its=wavread(filename); %打开指定文件并提取相应信息handles.y=handles.y(:,1); %由于是双声道的立体声,只提取一个声道的信号guidata(hobject,handles); %储存信息4打开打开对话框的界面如图 4 所示:图 4.选择麦克风输入时的界面读取相应的音频文件后便可点击“原声播放”与“频域分析”来观察时域和频域的波形了,其实现方式继承了频谱分析仪中的实现方式,在此不再赘述。对音频信号进行时域和频域分析的结果如图 5 所示:5图 5. 音频信号进行时域频域波形在图中可以看出,本次设计通过增加滚动条来调节波形的显示范围,从而可以很好的观察低
7、频区间的具体信息,解决了频谱分析仪中遇到的低频信号显示不明显的问题,其实现的语句如下:xmax=get(hobject,value)*f; %f 为正常显示的最大频率值,即 fs/2;ymin=0;ymax=max(handles.h)*1.2;axis(handles.axes2,0 xmax ymin ymax); %调整显示范围当使用八段均衡设置调整音频信号时,只需拖动需要调节的滚动条即可,当按照需要调节好均衡器的各个位置后,点击确认调整便能在 axes1 和 axes2显示调整后的时域频域波形。由于本软件有 3 中输入方式,不同的输入方式有不同的采样频率,不同的时间长度,所以首先要采用
8、一个 switch 语句来提取对应的 fs 和 long:switch get(findobj(tag,popupmenu5),value) case 1 fs=handles.fs; long=length(handles.y)/handles.fs;6 case 2 fs=10000; long=handles.t; case 3 fs=10000; long=2;end均衡器的实现原理:首先用 fft 函数把时域信号变换到频域,再用 find 函数找出频率中在第一个频率段的点的指针,将其存在一个数组 tag 中,然后取滚动条的值对 tag 指向的点做相应的放大或缩小处理。以同样的方式调节
9、其他频段的值。选择“调节指数”能够获得不同的调节幅度,由于是指数调节,因而能够获得很大的调节范围。调节完后的频域信号再通过 ifft 反变换便能得到均衡后的时域信号了。以上过程的具体实现代码:n=2ceil(log2(fs*long); %计算需要变换的点数 ny = fft(handles.y,n);pyy = y.* conj(y) / n; %计算幅值的平方f = fs*(0:n/2-1)/n;f(n/2+1:n) = f(n/2:-1:1);zs=get(handles.zhishu,value); %获得调节指数fmax=max(f);if fmax30 s=get(handles.
10、slider1,value); tag=find(f=30 & f1 w1=2*w1/handles.fs;endif w21 w2=2*w2/handles.fs;endif get(handles.ditong,value)=1 %判断滤波器类型 b a=butter(js,w1,low);elseif get(handles.gaotong,value)=1 b a=butter(js,w1,high);elseif get(handles.daitong,value)=1b a=butter(js,w1 w2);elseif get(handles.daizhu,value)=
11、1b a=butter(js,w1 w2,stop);else return;endh f=freqz(b,a,512);plot(handles.axes3,f,abs(h); %作滤波器波形maxf=max(f)/2;axis(handles.axes3,0 maxf 0 max(abs(h)*1.5);handles.y=filter(b,a,handles.y); %滤波由频率为 3000 的低通滤波器滤波后的结果如图 7 所示:9图 7.通过低通滤波器 由图可以看出低于 3000hz 的频段部分得以保留,而 3000hz 以上的频段全部被滤掉,说明滤波器有较好的效果。三、本软件的特点
12、三、本软件的特点1.操作简洁明了操作简洁明了 本软件虽然实现的功能比较丰富,但是由于实现过程中采用一系列的 set 语句使得操作者能够按照正确的步骤进行操作,从而大大减少了由于误操作所导致的错误。2.丰富的功能丰富的功能 本软件有音频文件输入、麦克风输入和信号发生器输入 3 种输入方式,均衡器调节和滤波器调节 2 种不同原理的信号调节方式,从而可以满足各种使用需要。103.设置了设置了坐标轴调整功能坐标轴调整功能与之前本人的软件相比增加了坐标轴调整功能,以便观察小范围的波形。使用滚动条调整坐标轴观察低频信号如图 8 所示。图 8.使用滚动条观察低频信号的界面四、四、致谢致谢首先感谢何老师给我这
13、样一个锻炼的机会,通过自己的努力能够取得一定的成果。还要感谢和我一起讨论进步的程伟林、冼开逸、杨秋虎同学,光靠我自己的力量是无法完成这个工作的。最后还要感谢在我做报告那天给我掌声的同学,对于站在台上就紧张的我来说,你们的掌声是对我莫大的鼓励。五、参考文献五、参考文献1 http:/ 求是科技.matlab7.0 从入门到精通.北京:人民邮电出版社.2004;11对于本课程的感受和建议对于本课程的感受和建议 几周的课程即将结束,对于这门课程感触还是很深的,首先不得不承认的是这门课刚开始学起来很累,累主要反映在课程与以往的课程有很大的不同,第一次自己完成这些开放性的任务多少有些无从下手的感觉。其次
14、一个原因我觉得很多时候学习的并不是知识,而是解决问题的能力,这一点与以前学习的对象有很大不同,所以感觉不是很适应。但是在学过一段时间之后却有另一种感受,虽然任务在变难,但是并没有感觉更加累了,反而是有些时候能够轻松的解决之前觉得很难的问题,感觉自己解决问题的能力得到了提高。所以总的来说这些累都是值得的。其次是我感觉要求每一个人上台演讲这一点很有必要,在这之前我只要站在台上看见下面那么多人就会很紧张。您应该还记得考研复试的时候有个同学无法准确描述出一个圆台工件的事情吧,当时一紧张就什么都说不出来了 。不过这次课上您给我们介绍了一些作报告要主要的事情,我回去也查阅了一些关于临场紧张的解决方式。我觉
15、得其中一条对我很有帮助:紧张来源于对于事情的结果有过多的期望。结合您上课讲的一些内容我思考了一下,调整了自己的心态,于是就完成了一次我个人比较满意的演讲。以后虽然不一定都能有很好的口才,但至少我能够克服不必要的紧张了。所以在这里要感谢您!对于本课程的建议我个人认为主要有一下几点:121. 对于原理上的讲解需要更加深入一些。毕竟有些内容不是很熟悉,有的或者是忘了,如果能够讲解的更加基础点的话,应该能够使课堂教学达到更好的效果。2. 在课堂上能够鼓励或强制要求大家分组,这里的分组并不是说要一组只交一份报告,而是鼓励大家能够和不认识的人相互讨论,目前的情况基本都是一个实验室之间在讨论或者只去找熟悉的
16、人讨论。如果随机打乱分组的话应该能够加大讨论的范围。3. 可以在课堂上介绍一些比较新颖的功能的实现函数,具体实现起来可以要求同学们写软件特点这一项,然后由老师收集再介绍。以上就是我对本门课程的感受和建议。13附录function varargout = eq(varargin)% eq m-file for eq.fig% eq, by itself, creates a new eq or raises the existing% singleton*.% h = eq returns the handle to a new eq or the handle to% the existing
17、 singleton*.% eq(callback,hobject,eventdata,handles,.) calls the local% function named callback in eq.m with the given input arguments.% eq(property,value,.) creates a new eq or raises the% existing singleton*. starting from the left, property value pairs are% applied to the gui before eq_openingfun
18、ction gets called. an% unrecognized property name or invalid value makes property application14% stop. all inputs are passed to eq_openingfcn via varargin.% *see gui options on guides tools menu. choose gui allows only one% instance to run (singleton).% see also: guide, guidata, guihandles% copyrigh
19、t 2002-2003 the mathworks, inc.% edit the above text to modify the response to help eq% last modified by guide v2.5 25-oct-2008 12:02:45% begin initialization code - do not editgui_singleton = 1;gui_state = struct(gui_name, mfilename, . gui_singleton, gui_singleton, . gui_openingfcn, eq_openingfcn,
20、. gui_outputfcn, eq_outputfcn, .15 gui_layoutfcn, , . gui_callback, );if nargin & ischar(varargin1) gui_state.gui_callback = str2func(varargin1);endif nargout varargout1:nargout = gui_mainfcn(gui_state, varargin:);else gui_mainfcn(gui_state, varargin:);end% end initialization code - do not edit%
21、 - executes just before eq is made visible.function eq_openingfcn(hobject, eventdata, handles, varargin)% this function has no output args, see outputfcn.% hobject handle to figure% eventdata reserved - to be defined in a future version of matlab% handles structure with handles and user data (see gu
22、idata)16% varargin command line arguments to eq (see varargin)% choose default command line output for eqhandles.output = hobject;% update handles structureguidata(hobject, handles);% uiwait makes eq wait for user response (see uiresume)% uiwait(handles.figure1);set(handles.open,enable,off);set(hand
23、les.record,enable,off);set(handles.t,enable,off);set(handles.pinlv,enable,off);set(handles.fuzhi,enable,off);set(handles.showwave,enable,off);set(handles.checkbox1,enable,off); set(handles.popupmenu2,enable,off);set(handles.slider1,value,0.5);set(handles.slider2,value,0.5);set(handles.slider3,value,
24、0.5);17set(handles.slider4,value,0.5);set(handles.slider5,value,0.5);set(handles.slider6,value,0.5);set(handles.slider7,value,0.5);set(handles.slider8,value,0.5);set(handles.slider9,value,1);set(handles.slider10,value,1);set(handles.play1,enable,off);set(handles.pushbutton7,enable,off);set(handles.p
25、ushbutton8,enable,off);set(handles.play2,enable,off);set(handles.pushbutton9,enable,off);set(handles.pushbutton10,enable,off);% - outputs from this function are returned to the command line.function varargout = eq_outputfcn(hobject, eventdata, handles) % varargout cell array for returning output arg
26、s (see varargout);18% hobject handle to figure% eventdata reserved - to be defined in a future version of matlab% handles structure with handles and user data (see guidata)% get default command line output from handles structurevarargout1 = handles.output;% - executes on slider movement.function sli
27、der1_callback(hobject, eventdata, handles)% hobject handle to slider1 (see gcbo)% eventdata reserved - to be defined in a future version of matlab% handles structure with handles and user data (see guidata)% hints: get(hobject,value) returns position of slider% get(hobject,min) and get(hobject,max)
28、to determine range of slider19% - executes during object creation, after setting all properties.function slider1_createfcn(hobject, eventdata, handles)% hobject handle to slider1 (see gcbo)% eventdata reserved - to be defined in a future version of matlab% handles empty - handles not created until a
29、fter all createfcns called% hint: slider controls usually have a light gray background, change% usewhitebg to 0 to use default. see ispc and computer.usewhitebg = 1;if usewhitebg set(hobject,backgroundcolor,.9 .9 .9);else set(hobject,backgroundcolor,get(0,defaultuicontrolbackgroundcolor);end20% - ex
30、ecutes on slider movement.function slider3_callback(hobject, eventdata, handles)% hobject handle to slider3 (see gcbo)% eventdata reserved - to be defined in a future version of matlab% handles structure with handles and user data (see guidata)% hints: get(hobject,value) returns position of slider%
31、get(hobject,min) and get(hobject,max) to determine range of slider% - executes during object creation, after setting all properties.function slider3_createfcn(hobject, eventdata, handles)% hobject handle to slider3 (see gcbo)% eventdata reserved - to be defined in a future version of matlab% handles
32、 empty - handles not created until after all createfcns called% hint: slider controls usually have a light gray background, change21% usewhitebg to 0 to use default. see ispc and computer.usewhitebg = 1;if usewhitebg set(hobject,backgroundcolor,.9 .9 .9);else set(hobject,backgroundcolor,get(0,defaul
33、tuicontrolbackgroundcolor);end% - executes on slider movement.function slider4_callback(hobject, eventdata, handles)% hobject handle to slider4 (see gcbo)% eventdata reserved - to be defined in a future version of matlab% handles structure with handles and user data (see guidata)% hints: get(hobject
34、,value) returns position of slider% get(hobject,min) and get(hobject,max) to determine 22range of slider% - executes during object creation, after setting all properties.function slider4_createfcn(hobject, eventdata, handles)% hobject handle to slider4 (see gcbo)% eventdata reserved - to be defined
35、in a future version of matlab% handles empty - handles not created until after all createfcns called% hint: slider controls usually have a light gray background, change% usewhitebg to 0 to use default. see ispc and computer.usewhitebg = 1;if usewhitebg set(hobject,backgroundcolor,.9 .9 .9);else set(
36、hobject,backgroundcolor,get(0,defaultuicontrolbackgroundcolor);23end% - executes on slider movement.function slider5_callback(hobject, eventdata, handles)% hobject handle to slider5 (see gcbo)% eventdata reserved - to be defined in a future version of matlab% handles structure with handles and user
37、data (see guidata)% hints: get(hobject,value) returns position of slider% get(hobject,min) and get(hobject,max) to determine range of slider% - executes during object creation, after setting all properties.function slider5_createfcn(hobject, eventdata, handles)% hobject handle to slider5 (see gcbo)%
38、 eventdata reserved - to be defined in a future version of matlab% handles empty - handles not created until after all 24createfcns called% hint: slider controls usually have a light gray background, change% usewhitebg to 0 to use default. see ispc and computer.usewhitebg = 1;if usewhitebg set(hobje
39、ct,backgroundcolor,.9 .9 .9);else set(hobject,backgroundcolor,get(0,defaultuicontrolbackgroundcolor);end% - executes on slider movement.function slider6_callback(hobject, eventdata, handles)% hobject handle to slider6 (see gcbo)% eventdata reserved - to be defined in a future version of matlab% hand
40、les structure with handles and user data (see guidata)25% hints: get(hobject,value) returns position of slider% get(hobject,min) and get(hobject,max) to determine range of slider% - executes during object creation, after setting all properties.function slider6_createfcn(hobject, eventdata, handles)%
41、 hobject handle to slider6 (see gcbo)% eventdata reserved - to be defined in a future version of matlab% handles empty - handles not created until after all createfcns called% hint: slider controls usually have a light gray background, change% usewhitebg to 0 to use default. see ispc and computer.us
42、ewhitebg = 1;if usewhitebg set(hobject,backgroundcolor,.9 .9 .9);else26 set(hobject,backgroundcolor,get(0,defaultuicontrolbackgroundcolor);end% - executes on slider movement.function slider7_callback(hobject, eventdata, handles)% hobject handle to slider7 (see gcbo)% eventdata reserved - to be defin
43、ed in a future version of matlab% handles structure with handles and user data (see guidata)% hints: get(hobject,value) returns position of slider% get(hobject,min) and get(hobject,max) to determine range of slider% - executes during object creation, after setting all properties.function slider7_cre
44、atefcn(hobject, eventdata, handles)% hobject handle to slider7 (see gcbo)27% eventdata reserved - to be defined in a future version of matlab% handles empty - handles not created until after all createfcns called% hint: slider controls usually have a light gray background, change% usewhitebg to 0 to
45、 use default. see ispc and computer.usewhitebg = 1;if usewhitebg set(hobject,backgroundcolor,.9 .9 .9);else set(hobject,backgroundcolor,get(0,defaultuicontrolbackgroundcolor);end% - executes on slider movement.function slider2_callback(hobject, eventdata, handles)% hobject handle to slider2 (see gcb
46、o)28% eventdata reserved - to be defined in a future version of matlab% handles structure with handles and user data (see guidata)% hints: get(hobject,value) returns position of slider% get(hobject,min) and get(hobject,max) to determine range of slider% - executes during object creation, after setti
47、ng all properties.function slider2_createfcn(hobject, eventdata, handles)% hobject handle to slider2 (see gcbo)% eventdata reserved - to be defined in a future version of matlab% handles empty - handles not created until after all createfcns called% hint: slider controls usually have a light gray ba
48、ckground, change% usewhitebg to 0 to use default. see ispc and computer.usewhitebg = 1;29if usewhitebg set(hobject,backgroundcolor,.9 .9 .9);else set(hobject,backgroundcolor,get(0,defaultuicontrolbackgroundcolor);end% - executes on slider movement.function slider8_callback(hobject, eventdata, handle
49、s)% hobject handle to slider8 (see gcbo)% eventdata reserved - to be defined in a future version of matlab% handles structure with handles and user data (see guidata)% hints: get(hobject,value) returns position of slider% get(hobject,min) and get(hobject,max) to determine range of slider30% - execut
50、es during object creation, after setting all properties.function slider8_createfcn(hobject, eventdata, handles)% hobject handle to slider8 (see gcbo)% eventdata reserved - to be defined in a future version of matlab% handles empty - handles not created until after all createfcns called% hint: slider
51、 controls usually have a light gray background, change% usewhitebg to 0 to use default. see ispc and computer.usewhitebg = 1;if usewhitebg set(hobject,backgroundcolor,.9 .9 .9);else set(hobject,backgroundcolor,get(0,defaultuicontrolbackgroundcolor);end31% - executes on button press in open.function
52、open_callback(hobject, eventdata, handles)% hobject handle to open (see gcbo)% eventdata reserved - to be defined in a future version of matlab% handles structure with handles and user data (see guidata)set(handles.play1,enable,on);set(handles.pushbutton7,enable,on);filename, pathname = uigetfile(*.
53、wav, please chose an wave-file);handles.y handles.fs bits=wavread(filename);handles.y=handles.y(:,1);guidata(hobject,handles);% - executes on button press in play2.function play2_callback(hobject, eventdata, handles)% hobject handle to play2 (see gcbo)% eventdata reserved - to be defined in a future
54、 version of matlab% handles structure with handles and user data (see guidata)32switch get(findobj(tag,popupmenu5),value) case 1 fs=handles.fs; long=length(handles.y)/handles.fs; case 2 fs=10000; long=handles.t; case 3 fs=10000; long=2;endwavplay(handles.y,fs);% - executes on button press in record.
55、function record_callback(hobject, eventdata, handles)% hobject handle to record (see gcbo)% eventdata reserved - to be defined in a future version of matlab% handles structure with handles and user data (see guidata)33set(handles.play1,enable,on);set(handles.pushbutton7,enable,on);if isnan(handles.t
56、) errordlg(time must be number!,error);endhandles.y=wavrecord(handles.t*10000, 10000,double);guidata(hobject,handles);msgbox(mission complete!,hint);% - executes on button press in showwave.function showwave_callback(hobject, eventdata, handles)% hobject handle to showwave (see gcbo)% eventdata rese
57、rved - to be defined in a future version of matlab% handles structure with handles and user data (see guidata)set(handles.play1,enable,on);set(handles.pushbutton7,enable,on);set(handles.checkbox1,enable,on); fs=5000;34n=10000;fuzhi=str2double(get(handles.fuzhi,string); pinlv=str2double(get(handles.p
58、inlv,string);if isnan(fuzhi) errordlg(amp must be number!,error);endif isnan(pinlv) errordlg(frequency must be number!,error);endleixing=get(findobj(tag,popupmenu2),value);x=linspace(0,n/fs,n);switch leixing case 1 y=fuzhi*sin(2*pi*x*pinlv); case 2 y=fuzhi*sign(sin(2*pi*x*pinlv); case 3 y=fuzhi*sawt
59、ooth(2*pi*x*pinlv,0.5);35 case 4 y=fuzhi*sawtooth(2*pi*x*pinlv); case 5 y=fuzhi*(2*rand(size(x)-1); otherwise endif get(handles.checkbox1,value)=0.0 handles.y=y;else handles.y=handles.y+y;endguidata(hobject, handles);% - executes on button press in checkbox1.function checkbox1_callback(hobject, even
60、tdata, handles)% hobject handle to checkbox1 (see gcbo)% eventdata reserved - to be defined in a future version of matlab% handles structure with handles and user data (see guidata)% hint: get(hobject,value) returns toggle state of checkbox136function t_callback(hobject, eventdata, handles)% hobject handle
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中国土地整治项目创业计划书
- 中国核桃种植及深加工项目创业计划书
- 中国家庭信息终端项目创业计划书
- 中国鸡项目创业计划书
- 中国散射通信机项目创业计划书
- 中国精酿啤酒设备项目创业计划书
- 中国计算机设备租赁项目创业计划书
- 中国观赏鱼饲料项目创业计划书
- 中国尿液诊断项目创业计划书
- 中国奶牛场项目创业计划书
- 第10课 养成遵纪守法好习惯
- 人教版英语七年级下册跨学科融合计划
- 砖厂安全生产管理制度
- 医院设备采购预算编制要点
- 汽车尾气治理技术
- 新教师科研能力提升措施
- 《现代农业生物技术育种方法》课件
- 企业慈善捐赠指引
- 部编版四年级道德与法治上册第8课《网络新世界》
- 房地产开发项目风险评估报告
- 2025年广东中考物理学科模拟试卷(广东专属)
评论
0/150
提交评论