小波变换信号滤波代码matlab

时间: 2023-05-14 18:00:59 浏览: 48
小波变换是一种数学工具,它在信号处理和滤波中有着广泛的应用。在MATLAB中,我们可以使用MATLAB内置的小波变换函数来对信号进行小波变换滤波。 首先,我们需要在MATLAB中导入需要处理的信号数据,例如: ```matlab signal = load('signal_data.mat'); ``` 接下来,我们可以使用MATLAB内置的小波变换函数,如「name」と「name」进行小波变换。例如,如果我们想要使用Daubechies 4小波对信号进行变换,可以使用以下代码: ```matlab [coefficients, frequencies] = wavedec(signal, 4, 'db4'); ``` 其中,coefficients是小波系数,frequencies是小波频率。我们可以使用MATLAB内置的wrcoef函数来重构信号: ```matlab reconstructed_signal = wrcoef('a', coefficients, frequencies, 'db4', 4); ``` 这将返回通过小波变换滤波后的信号数据。如果要滤除高频噪声,我们可以通过保留少量小波系数来实现: ```matlab threshold = 0.8 * max(abs(coefficients)); approximation_coefficients = coefficients; approximation_coefficients(abs(coefficients) < threshold) = 0; filtered_signal = waverec(approximation_coefficients, frequencies, 'db4'); ``` 其中,阈值可以根据具体情况进行调整。 综上所述,使用MATLAB进行小波变换滤波需要使用MATLAB内置的小波变换函数,如wavedec和wrcoef,以及重构函数waverec函数。可以通过保留少量小波系数来实现信号的滤波。

相关推荐

### 回答1: Morlet小波变换是一种常用于信号分析的小波变换方法,它是基于Morlet小波函数的变换。以下是使用MATLAB实现的Morlet小波变换的代码示例: matlab % 设置信号参数 t = 0:0.001:1; % 信号的时间范围 f = 10; % 信号的频率 % 生成信号 x = sin(2*pi*f*t); % 设置小波参数 fs = 1000; % 采样频率 fcenter = 10; % Morlet小波的中心频率 width = 5; % Morlet小波的带宽 % 计算Morlet小波变换 cwt_coef = cwt(x, fcenter, 'morl', fs); % 绘制Morlet小波变换结果 figure; imagesc(t, linspace(1, 100, length(cwt_coef)), abs(cwt_coef)); colormap(jet); colorbar; xlabel('时间'); ylabel('尺度'); title('Morlet小波变换'); % 显示Morlet小波变换结果 figure; plot(abs(cwt_coef(50, :))); % 显示尺度为50的小波系数幅度 xlabel('时间'); ylabel('幅度'); title('尺度为50的小波系数幅度'); 上述代码首先使用MATLAB的sin函数生成一个频率为10Hz的信号,并设置了信号的时间范围。然后,设置了Morlet小波的相关参数,包括采样频率、Morlet小波的中心频率和带宽。接着,调用MATLAB提供的cwt函数计算Morlet小波变换的小波系数。最后,分别绘制了Morlet小波变换结果的热力图和尺度为50的小波系数幅度。 ### 回答2: Morlet小波变换是一种在信号处理和图像处理中常用的小波变换方法。它是一种数学函数,将原始信号分解成多个频率的子信号,并可用于频谱分析、滤波和特征提取等应用。 以下是使用Matlab编写的Morlet小波变换代码示例: Matlab % 导入信号数据 load('signal.mat') t = signal(:,1); % 时域 x = signal(:,2); % 信号值 % 定义Morlet小波 frequencies = 0.1:0.1:10; % 要分析的频率范围 wavelet = zeros(length(frequencies), length(x)); % 创建小波矩阵 % 计算每个频率对应的小波变换 for i = 1:length(frequencies) frequency = frequencies(i); omega = 6; % Morlet小波参数 scale = omega/(2*pi*frequency); s = scale * sqrt(2*log(2)); t_wavelet = -3*s:1:length(x)+3*s; % 扩展小波的时间轴 morlet = exp(-(t_wavelet - length(x)/2).^2 / (2*s^2)) .* exp(1i * 2*pi*frequency*t_wavelet); morlet = morlet(length(x)/2+1: end-length(x)/2); % 裁剪小波长度和时域信号一致 wavelet(i,:) = conv(x, morlet, 'same'); % 小波变换,保持原始信号长度 end % 绘制小波变换结果 figure imagesc(t, frequencies, abs(wavelet)) set(gca, 'YDir', 'normal') colorbar xlabel('时间') ylabel('频率') title('Morlet小波变换结果') 以上代码首先导入信号数据,然后定义要分析的频率范围。接下来,代码会通过循环计算每个频率对应的Morlet小波,并将计算结果存储在小波矩阵中。最后,通过绘制小波变换结果,可以观察到不同频率下的频谱分布情况。 请注意,以上代码仅供参考,实际使用时可能需要根据具体情况进行适当调整。 ### 回答3: Morlet小波变换是一种在信号处理中常用的小波变换方法,它结合了小波变换和傅里叶变换的特点。下面是一个用Matlab实现Morlet小波变换的代码示例。 matlab function [wavelet_transform] = morlet_wavelet_transform(signal, dt, scales) % signal是待处理的信号,dt是采样间隔,scales是尺度参数 n = length(signal); % 信号的长度 t = (0:n-1) * dt; % 时间向量 frequencies = 1./(scales * dt); % 频率向量 morlet_wavelet = @(t, scale) exp(2*pi*1i*frequencies(scale)*t) .* exp(-t.^2/(2*(1/frequencies(scale))^2)); % Morlet小波函数 wavelet_transform = zeros(length(scales), n); % 初始化小波变换矩阵 for k = 1:length(scales) wavelet = morlet_wavelet(t, k); % 生成当前尺度的Morlet小波 wavelet_transform(k,:) = conv(signal, wavelet, 'same'); % 对信号进行小波变换 end end 在这个代码中,我们首先定义了Morlet小波函数,利用频率向量和时间向量生成对应的Morlet小波。然后,我们根据不同的尺度参数,生成不同尺度的Morlet小波并与信号进行卷积运算,得到小波变换结果。最后,返回小波变换矩阵。 需要注意的是,Morlet小波变换的结果是一个矩阵,每一行对应一个尺度,每一列对应信号的一个时间点。利用这个矩阵可以实现信号的时频分析,可以得到不同尺度下信号的频谱特征。
抱歉,我是一名语言模型,无法编写代码。但是,我可以为您提供LMS算法和小波变换的基本原理和流程。 LMS算法: LMS算法是一种自适应滤波算法,它的目标是通过对输入信号和期望输出信号之间的误差进行反馈控制,使滤波器的系数逐步调整,从而最小化误差。该算法的基本思想是:根据误差信号的大小和方向调整滤波器系数,使误差信号逐渐减小,从而达到滤波的目的。 小波变换: 小波变换是一种数学变换,它将信号分解成不同频率的小波分量,从而实现信号的压缩和去噪。小波变换是一种局部变换,它将信号分解成不同尺度的小波函数,从而可以精确地定位信号中的各种变化。 LMS算法与小波变换的结合: 将LMS算法与小波变换相结合,可以将小波变换的分解系数作为输入信号,然后对其进行自适应滤波。这样可以在保证信号特征不丢失的情况下,去除信号中的噪声和干扰。小波变换的多分辨率特性可以将信号分解成多个频率带,从而可以在不同的频率带上采用不同的自适应滤波器,提高滤波器的性能。 以下是LMS算法和小波变换的基本流程: 1. 初始化滤波器系数。 2. 将输入信号进行小波变换,得到小波分解系数。 3. 将小波分解系数作为输入信号,将期望输出信号与实际输出信号的误差作为反馈信号,通过LMS算法调整滤波器系数。 4. 将滤波器系数应用于小波分解系数,得到滤波后的小波分解系数。 5. 将滤波后的小波分解系数进行重构,得到滤波后的信号。
降噪算法是信号处理中的一个重要问题,下面是基于滤波、小波变换的降噪算法的matlab代码: 1. 基于滤波的降噪算法 首先,读入需要降噪的信号,假设信号为x。 x = wavread('noisy_signal.wav'); 然后,设计低通滤波器h,选择合适的截止频率和滤波类型。这里以FIR滤波器为例: f_cut = 1000; % 截止频率 fs = 44100; % 采样频率 N = 100; % 滤波器阶数 h = fir1(N, f_cut/(fs/2), 'low'); % FIR低通滤波器设计 接下来,使用卷积运算实现滤波: y = conv(x, h, 'same'); % 卷积运算 最后,将滤波后的信号y写入文件: wavwrite(y, fs, 'denoised_signal.wav'); 2. 基于小波变换的降噪算法 首先,读入需要降噪的信号,假设信号为x。 x = wavread('noisy_signal.wav'); 然后,使用小波变换将信号分解为多个频带: [c, l] = wavedec(x, 5, 'db4'); % 将信号分解为5级小波系数 接下来,根据小波系数的统计特性,确定一个阈值T,将小于T的小波系数置为0: sigma = median(abs(c))/0.6745; % 求噪声标准差 T = sigma * sqrt(2*log(length(x))); % 求阈值 c_new = wthresh(c, 's', T); % 置小于阈值的小波系数为0 最后,使用小波反变换将处理后的小波系数重构成降噪后的信号: y = waverec(c_new, l, 'db4'); % 小波反变换 将降噪后的信号y写入文件: wavwrite(y, fs, 'denoised_signal.wav'); 以上就是基于滤波、小波变换的降噪算法的matlab代码。需要根据实际情况调整各参数的值,以达到最佳降噪效果。
Haar小波变换是一种常用的小波变换方法,用于信号的分割和去噪。在MATLAB中,可以使用Wavelet Toolbox中的函数来实现Haar小波变换分割算法。 首先,需要加载Wavelet Toolbox。可以使用以下命令加载该工具箱: matlab % 加载Wavelet Toolbox addpath('toolbox/wavelet') 接下来,可以使用以下代码来实现Haar小波变换分割算法: matlab % 读取信号 signal = load('signal.mat'); % 进行Haar小波变换 \[c, l\] = wavedec(signal, n, 'haar'); % 根据需要的分割层数,选择保留的小波系数 c_new = wkeep(c, l(1:n)); % 进行逆变换,得到分割后的信号 signal_new = waverec(c_new, l, 'haar'); 在上述代码中,signal是输入信号,n是分割的层数。wavedec函数用于进行Haar小波变换,返回小波系数和长度信息。wkeep函数用于选择保留的小波系数,根据需要的分割层数。最后,使用waverec函数进行逆变换,得到分割后的信号。 请注意,上述代码仅为示例,实际应用中可能需要根据具体情况进行调整和优化。 #### 引用[.reference_title] - *1* *2* [【图像处理】基于图像直方图+滤波+小波变换+分割处理系统matlab源码含 GUI](https://blog.csdn.net/m0_60703264/article/details/119817704)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [【心电信号】基于matlab小波变换心电信号去噪【含Matlab源码 956期】](https://blog.csdn.net/TIQCmatlab/article/details/117449087)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
### 回答1: 高维小波变换(High-Dimensional Wavelet Transform)是指对高维数据进行小波变换处理的方法。在MATLAB程序中,可以使用CSDN(China Software Developer Network)这一技术社区网站来获取相关的程序代码。 在CSDN上搜索关键词“高维小波变换 Matlab程序”,可以找到许多程序和教程,帮助我们理解和实现高维小波变换。这些程序通常使用MATLAB编写,并且提供了详细的代码注释和说明。 对于初学者,可以从简单的二维小波变换开始学习,并逐步扩展到更高维度的情况。在MATLAB中,可以使用waveletdec2函数对二维数据进行小波分解,然后使用waveletrec2函数进行小波重构。这两个函数可以指定小波类型、分解层数和边界条件等参数。 对于更高维度的数据,可以使用Matlab工具箱中的相关函数,如ndwt和indwt。ndwt函数实现了n维小波分解,indwt函数用于n维小波重构。这些函数的使用方式类似于二维情况。 在CSDN上还可以找到一些示例程序,演示了如何应用高维小波变换处理不同类型的数据,如图像、视频和时空数据等。这些示例程序可以帮助我们更好地理解高维小波变换的应用和实现方法。 总之,在CSDN上可以找到丰富的资源和程序代码,帮助我们学习和实践高维小波变换。通过阅读相关文档和示例程序,我们可以掌握使用MATLAB进行高维小波变换的基本技巧,并应用于不同领域的数据处理和分析。 ### 回答2: 高维小波变换(Multi-dimensional Wavelet Transform)是一种通过分析多维信号的频率与时间特征的变换方法。Matlab提供了丰富的工具和函数来实现高维小波变换,其中一种常用的工具是CSDN(中国软件开发网)。 CSDN是一个广受开发者欢迎的技术交流社区,里面拥有大量的学习资料、代码示例和经验分享。通过在CSDN上搜索和学习关于高维小波变换的Matlab程序,可以帮助我们更好地理解和掌握这一变换方法。 要进行高维小波变换,我们首先需要了解信号的维度和特征。在Matlab中,我们可以使用多维数组来表示多维信号。然后,通过选择适当的小波函数和尺度参数,我们可以使用Matlab的小波变换函数(如wavetrans)对信号进行变换。通过调整尺度参数,我们可以获得不同尺度下的频域和时域特征。 在CSDN上,我们可以找到一些关于高维小波变换的Matlab程序示例,这些示例程序可以帮助我们理解如何使用Matlab进行高维小波变换。例如,我们可以找到示例代码来实现二维图像的小波变换,或者扩展到三维信号的变换。这些示例代码通常会提供详细的注释和解释,帮助我们理解算法的原理和实现细节。 总结来说,通过在CSDN上搜索和学习高维小波变换的Matlab程序,我们可以获得关于该变换方法的更深入理解,并且可以借助Matlab丰富的工具和函数来实现高维小波变换。不仅可以提高我们的算法理论水平,还可以将其应用于实际问题中,如图像处理、信号处理等领域。 ### 回答3: 高维小波变换是一种基于小波分析的信号处理方法,用于分解和重构高维信号。Matlab是一种专业的科学计算软件,可以实现高维小波变换的相关算法。 在Matlab中,可以使用Wavelet Toolbox中的函数来进行高维小波变换。首先,需要使用wavedec2函数对高维信号进行分解。该函数可以将输入的高维信号进行小波变换,并返回小波系数和近似系数。小波系数表示了信号中的细节信息,而近似系数表示了信号的低频成分。 接下来,可以使用waverec2函数对小波系数和近似系数进行重构,得到原始信号的近似结果。需要注意的是,重构的结果可能与原始信号存在一定的误差。 除了基本的分解和重构函数外,Matlab还提供了丰富的小波函数,可以用于滤波、调整参数等操作。可以根据需要选择合适的小波函数和参数,进行更加精细的信号处理。 在CSDN上,可以找到许多关于高维小波变换的Matlab程序,包括算法原理、代码实现和应用案例等。这些程序可以帮助理解和应用高维小波变换的相关知识,丰富了解信号处理领域的研究成果。 因此,通过Matlab程序和CSDN上的研究资料,我们可以学习和应用高维小波变换,对高维信号进行分解和重构,实现信号的降噪、特征提取等功能,为深入研究和应用信号处理提供了有力的工具和方法。
### 回答1: 连续小波变换(Continuous Wavelet Transform)是一种信号处理技术,用于将信号分解成不同频率和尺度的小波函数。Matlab提供了丰富的工具和函数用于实现连续小波变换。 首先,需要导入信号并选择合适的小波函数作为基函数。常用的小波函数有Morlet、Mexican Hat和Haar等。使用Matlab中的wavefun函数可以生成小波函数。 然后,使用cwt函数进行连续小波变换。该函数的输入参数包括待分析的信号、小波函数和尺度等。尺度用于表示小波函数的频率。 在执行连续小波变换后,可以使用plot函数将变换结果可视化。通常会绘制小波系数的时频图,以显示信号在不同尺度上的频率变化情况。 除了连续小波变换,Matlab还提供了其他相关工具函数,如waverec用于重构信号,wenergy用于计算能量,wscalogram用于生成频谱等。 需要注意的是,连续小波变换的计算量较大,因此对于较长的信号可能需要进行处理,如裁剪或采样。 总之,使用Matlab实现连续小波变换可以通过导入信号、选择小波函数、调用cwt函数以及可视化结果来实现。连续小波变换在信号处理、图像处理等领域有广泛的应用,可以用于信号分析、滤波、去噪等任务。 ### 回答2: 连续小波变换(CWT)是一种基于小波分析的信号处理方法,它可以将信号分解为不同频率的小波成分。在MATLAB中,可以使用cwt函数实现CWT。 首先,需要定义一个要分析的信号,可以使用一个向量或一个矩阵表示。接下来,需要选择一个合适的小波函数。可以使用MATLAB中提供的不同小波函数,如'haar'、'db4'等,也可以自定义一个小波函数。 然后,可以调用cwt函数来执行连续小波变换。cwt函数的语法如下: cwt(signal, scales, wavelet) 其中,signal是要分析的信号,scales是一个表示尺度的向量,wavelet是选择的小波函数。 cwt函数将返回一个连续小波变换矩阵,其中每一列代表不同尺度的小波成分。可以使用surf函数将结果可视化,以便更好地理解信号的频率特性。 下面是一个简单的示例: % 定义一个信号 signal = sin(0.1*pi*(1:100)); % 进行连续小波变换 scales = 1:10; wavelet = 'haar'; cwtMatrix = cwt(signal, scales, wavelet); % 可视化结果 surf(abs(cwtMatrix)); 在这个示例中,我们选择使用sin函数生成一个简单的信号,并对其进行连续小波变换。我们选择了从1到10的尺度,并使用haar小波函数。通过可视化结果,我们可以看到信号在不同尺度下的频率成分。 MATLAB中的连续小波变换具有许多灵活的参数和选项,我们可以根据具体的需要进行调整。因此,该方法可以广泛应用于不同领域的信号处理任务。 ### 回答3: 连续小波变换(Continuous Wavelet Transform,CWT)是一种用于信号处理和分析的方法,它可以将信号在不同频率上分解与重构。在Matlab中,我们可以使用Wavelet Toolbox来实现连续小波变换。 首先,我们需要准备一个输入信号,并选择合适的小波函数。Matlab提供了多种小波函数,例如'Morlet'、'Haar'等。我们可以使用cwtfilterbank函数来创建一个小波滤波器。例如,以下代码将使用'Morlet'小波函数创建一个小波滤波器: waveletFunction = 'morl'; scales = 1:0.5:10; waveletFilterbank = cwtfilterbank('Wavelet',waveletFunction,'SignalLength',length(signal),'Scales',scales); 接下来,我们可以使用cwt函数来对信号进行连续小波变换。例如,以下代码将对名为'signal'的输入信号进行连续小波变换: [cfs, frequencies] = cwt(signal,'FilterBank',waveletFilterbank); 其中,cfs是连续小波系数矩阵,每一列对应于一个尺度的连续小波系数。frequencies是对应于cfs的尺度的频率值。 最后,我们可以使用icwt函数来对连续小波系数进行逆变换,以重构信号。例如,以下代码将对连续小波系数进行逆变换: reconstructedSignal = icwt(cfs,frequencies,waveletFilterbank); 在使用连续小波变换时,我们可以根据具体需求来选择合适的小波函数和尺度范围。我们也可以通过调整小波滤波器的参数来控制变换的精度和分辨率。 以上是在Matlab中实现连续小波变换的简要步骤。通过使用Wavelet Toolbox提供的函数和工具,我们可以方便地进行连续小波变换以及信号的分析和处理。

最新推荐

基于小波变换数字水印 matlab及VC源代码 论文 算法

算法基于Haar小波变换,把小波系数分块,并计算每个块的平均值。在一系列信号处理之后,这些块(尤其是大的块)的平均值不会有很大改变,否则,重构的图像就与原始图像有很大差别。通过对这些块的平均值进行量化来嵌入...

ssm数据结构课程网络学习平台的+vue毕业论文.doc

ssm数据结构课程网络学习平台的+vue毕业论文.doc

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire

Objective-C中的协议与代理设计模式介绍

# 1. 理解Objective-C中的协议 协议是Objective-C中一种很重要的特性,它类似于其他编程语言中的接口,用来定义对象之间的通信规则和行为约定。在Objective-C中,协议可以帮助实现对象之间的松耦合和重用性。让我们深入了解Objective-C中的协议。 ## 1.1 什么是Objective-C中的协议? 在Objective-C中,协议是一组方法的声明,定义了一个对象可以遵循的接口。协议本身并不实现任何方法,而是规定遵循该协议的类需要实现协议中定义的方法。通过协议,可以在不同的类之间定义一组公共的行为和方法。 ## 1.2 协议的声明和使用方法 在Ob

编写求n!的函数f(int n),在主函数中输入两个整数m、n,然后调用函数求: C=m!/n!(m -n)!

好的,我可以编写这个函数。以下是代码示例: ```c++ #include <iostream> using namespace std; int f(int n) { if (n <= 1) { return 1; } else { return n * f(n - 1); } } int main() { int m, n; cout << "请输入两个整数m和n,以空格分隔:" << endl; cin >> m >> n; int C = f(m) / (f(n) * f(m - n));

视频中运动目标跟踪算法的研究.doc

视频中运动目标跟踪算法的研究.doc

"互动学习:行动中的多样性与论文攻读经历"

多样性她- 事实上SCI NCES你的时间表ECOLEDO C Tora SC和NCESPOUR l’Ingén学习互动,互动学习以行动为中心的强化学习学会互动,互动学习,以行动为中心的强化学习计算机科学博士论文于2021年9月28日在Villeneuve d'Asq公开支持马修·瑟林评审团主席法布里斯·勒菲弗尔阿维尼翁大学教授论文指导奥利维尔·皮耶昆谷歌研究教授:智囊团论文联合主任菲利普·普雷教授,大学。里尔/CRISTAL/因里亚报告员奥利维耶·西格德索邦大学报告员卢多维奇·德诺耶教授,Facebook /索邦大学审查员越南圣迈IMT Atlantic高级讲师邀请弗洛里安·斯特鲁布博士,Deepmind对于那些及时看到自己错误的人...3谢谢你首先,我要感谢我的两位博士生导师Olivier和Philippe。奥利维尔,"站在巨人的肩膀上"这句话对你来说完全有意义了。从科学上讲,你知道在这篇论文的(许多)错误中,你是我可以依

Objective-C中的推送通知与APNs实现

# 1. 推送通知简介 推送通知是移动应用开发中常用的一种技术,它可以向用户发送消息、提醒或通知,即使用户并未在使用应用时也能及时获取重要信息。在Objective-C中,实现推送通知需要使用苹果提供的苹果推送通知服务(APNs)。本章将介绍推送通知的基础知识,包括推送通知的概念、作用和原理。接下来我们将深入了解。 ### 1.1 什么是推送通知 推送通知是通过网络将消息发送到设备的一种技术。应用程序可以向设备发送推送通知,无论用户当前是否在使用该应用,都可以及时获取到消息或通知。用户收到推送通知后,可以通过通知中的内容了解到消息的来源和内容,以便及时处理。 ### 1.2 推送通知的

php中,跳转语句有break和contimue

其实,`break`和`continue`并不是跳转语句,它们是用于控制循环语句的关键字。 `break`用于中断循环,跳出当前循环结构(如`for`、`while`、`do-while`),执行循环结构后面的语句。如果`break`语句后面跟着一个数字n,则表示跳出第n层循环。例如: ``` for ($i = 0; $i < 10; $i++) { for ($j = 0; $j < 10; $j++) { if ($j == 5) { break 2; // 跳出两层循环 } } } ``` `continue

IMO 涂层性能标准PSPC和执行指南PPT学习教案.pptx

IMO 涂层性能标准PSPC和执行指南PPT学习教案.pptx