首页 > 其他分享 >示波器输出的csv文件如何转换为频谱图及其excel表格(频率与幅值)

示波器输出的csv文件如何转换为频谱图及其excel表格(频率与幅值)

时间:2024-08-26 10:24:27浏览次数:6  
标签:频谱 幅度 CSV fft excel 幅值 FFT 频率 csv

示波器输出的CSV文件通常包含的是采样的时域信号数据,而不是直接的频率和幅度信息。这个文件一般包括时间(Time)和电压(Voltage)两列,记录了电压随时间变化的情况。

要从这些时域数据中得到频率和幅度的变化,你需要进行一些信号处理,通常步骤如下:

①导入CSV数据:读取CSV文件中的时间和电压数据。
   
②FFT变换:使用快速傅里叶变换(FFT)将时域信号转换为频域信号,从而得到频率分量和相应的幅度。

③分析频率和幅度:从FFT结果中提取感兴趣的频率分量的幅度,分析其随时间的变化情况。

④绘制频谱图或幅度随频率变化的图:可以绘制频谱图(频率 vs. 幅度)或幅度随时间变化的图来观察频率和幅度的变化。

如果你想直接在CSV文件中看到频率与幅度的变化,通常需要借助一些数据处理工具,比如matlab来进行上述分析并绘图。

如下图所示,下图为csv文件中一部分数据,其数据表示的是时间(Time)和电压(Voltage)两列,我们需要得到有关频率与幅值的数据,需要进行matlab操作。

可以参考如下程序,自定义选择所需要的csv文件,进行FFT变换得到频谱图,同时生成频谱图所相关的关于频率与幅值的excel表格。

% 让用户交互式选择CSV文件
[file, path] = uigetfile('*.CSV', 'Select the CSV file');
if isequal(file, 0)
    disp('User selected Cancel');
else
    fullFilePath = fullfile(path, file);

    % 读取CSV文件
    data = readtable(fullFilePath);

    % 假设CSV文件中的时间和电压数据分别在第1列和第2列
    time = data{:, 1};  % 读取时间数据
    voltage = data{:, 2};  % 读取电压数据

    % 检查数据的长度是否为2的幂,如果不是,为了避免频谱泄漏进行截断或填充
    N = length(voltage);
    N_fft = 2^nextpow2(N);  % 获取大于或等于N的最小2的幂

    % 计算采样频率
    dt = mean(diff(time));  % 计算时间间隔
    Fs = 1 / dt;  % 采样频率

    % 对电压数据进行FFT变换
    Y = fft(voltage, N_fft);

    % 计算频率向量
    f = (0:(N_fft/2-1)) * (Fs / N_fft);

    % 计算FFT的幅度
    amplitude = abs(Y / N_fft);

    % 只取正频率部分
    amplitude = amplitude(1:N_fft/2);

    % 将频率和幅度数据保存到表格中
    T = table(f', amplitude, 'VariableNames', {'Frequency', 'Amplitude'});

    % 保存表格数据到Excel文件
    [saveFile, savePath] = uiputfile('*.xlsx', 'Save Spectrum Data As');
    if isequal(saveFile, 0)
        disp('User selected Cancel');
    else
        writetable(T, fullfile(savePath, saveFile));
        disp(['Frequency spectrum data saved to ', fullfile(savePath, saveFile)]);
    end

    % 绘制频谱图
    figure;
    plot(f, amplitude);
    title('Frequency Spectrum');
    xlabel('Frequency (Hz)');
    ylabel('Amplitude');
    grid on;
end

通过以上代码生成的excel表格及其频谱图如下图所示。 

标签:频谱,幅度,CSV,fft,excel,幅值,FFT,频率,csv
From: https://blog.csdn.net/m0_57407372/article/details/141555548

相关文章

  • GO语言从前端传来的表格数据和表格标题导出到Excel表格中
    提示:使用Go将前端表格数据和标题导出到Excel表格中,你可以使用第三方库,如"xlsx"。数据的操作流程遵循:分析数据格式→确定数据对象→解析→构建表格→生成文件。以下是一个简单的示例,展示了如何在Gin框架中实现该功能:文章目录一、表格样式二、使用步骤1.引入库2.创建路......
  • DsExcel / GcExcel 7.2.0 for Java
    Excel文档解决方案(DsExcel) .NET和Java版本在v7.2版本中继续提供令人兴奋的新功能和增强功能。此更新引入了对许多高级MicrosoftExcel功能的支持,为用户提供了更强大、更灵活的工具。DsExcel模板的重大改进增强了模板创建的功能集和性能。此外,此版本还提供了与Spread......
  • C# 将数据写入到Excel表格
    Excel是一款广泛应用于数据处理、分析和报告制作的电子表格软件。在商业、学术和日常生活中,Excel的使用极为普遍。本文将详细介绍如何使用免费.NET库将数据写入到Excel中,包括文本、数值、数组、和DataTable数据的输入。C#在Excel单元格中写入文本、或数值C#在Excel工作表......
  • 1.Excel
    Excle记录一、基础操作1.跳转(Ctrl+方向键):快速移动到数据的末端2.选定(Shift+点击选中):多选数据3.定位(Ctrl+G):根据选中条件选择离散单元格4.自动填充:选中需要拓展的区域的右下角,当出现+时进行拖拽5.查找替换(Ctrl+F):通配符(*表示多个,?表示一个)二、常见标签的使用1.数据......
  • python 05-标准库:csv、json、sqlite3、datetime模块
    csv模块importcsv#data.csv不存在时,会现在当前目录下创建一个data.csv文件withopen("data.csv","w",encoding='utf-8')asfile:writer=csv.writer(file)writer.writerow(["trasanction_id","product_id","pric......
  • poi的excel导出
    poi的excel导出这个导出依赖于模板文件,可便捷设置表头样式。也可以不使用模板,直接创建。1.引入poi依赖<dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>4.1.2</version></dependency>2.准备模板文件3.编写导出代......
  • http实现form表单带CSV附件上传,数据不落盘实现方式
    以往的印象里面,实现附件上传需要有附件在磁盘里面存在(可能是见识浅薄),想着怎么去优化一下,避免落盘,就引入了这种方式,实现很容易,只是没有实践过,实践导致认知限制<dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</arti......
  • C# read excel file via ExcelDataReader
    Install-PackageExcelDataReader usingExcelDataReader;usingSystem.Text;usingSystem.IO;namespaceConsoleApp50{internalclassProgram{staticvoidMain(string[]args){ReadExcel("aaa.xls");......
  • Excel/WPS 取消合并单元格,并填充
     WPS实现 Excel实现https://baijiahao.baidu.com/s?id=1799704002472022803&wfr=spider&for=pc然后我们就需要在公式编辑里面,输入公式=C2按CTRL+回车,就可以填充所有的结果不是 CTRL+回车是,向下填充 ......
  • 一款专为内网办公环境设计的操作系统,集成了Word、Excel、PPT、PDF编辑器,内网聊天、白
    前言在当今数字化办公时代,企业面临着多样化的办公需求。现有软件往往存在一些痛点,如操作复杂、兼容性差、资源消耗高,以及在内网环境下的通讯和文件共享不便。这些限制不仅影响了工作效率,也制约了企业的数字化转型。因此,一款能够处理这些问题的软件显得尤为迫切。介绍GodoOS......