最近年底和师兄交流了数据分析、波形处理问题。一个是将示波器导出的csv数据放到MATLAB中进行THD分析,另一个是自定义横纵坐标轴进行绘图,就这两个问题记录一下。
不需要背代码,简单、易于理解,使用过程中截个图就行了。
一、对示波器导出的波形数据进行THD分析
1、导入数据至MATLAB,修改变量名和数据类型;
- 点击“导入数据”,选中示波器保存的“csv”数据文件;

- 自定义一下数据名字(数据表示什么就记为什么,方便理解),修改数据类型为“数值矩阵”(便于后面通过调用矩阵的行列,进行程序编写);

- 以上两点完成后,点击“绿色的对号”导入数据。
2、提取横纵坐标数据,组合成适合Simulink进行FFT分析的数据格式;
明确一点:MATLAB编程只是把数据保存在一个变量内,然后把变量放到Simulink中用Scope展示出来。因此,接下来的编程目的:要确定数据显示的横纵坐标。我们定义x为横坐标,y为纵坐标,横纵坐标组合后的数据为z:
% 数据类型为列数据
data = data1;
x = data(3:2002,1)+0.1; % ("横坐标范围",“纵坐标范围”),("第i行":"第j行","第k列")
y = data(3:2002,2); % 取数据的第2列为纵坐标数据
z = [x,y]; % 组合后:Z的第一列为横坐标数据,第二列为纵坐标数据
% 数据类型为行数据,用“transpose”函数将“行”转置为“列”
data = data1;
x = transpose(data(:,1))+0.1; % 1行n列的数据,转换为n行1列的数据
y = transpose(data(:,2)); % 横坐标范围只打一个冒号:表示默认从第一行到最后一行,即所有行
z = [x,y];
以下三点是对程序段进行优化的解释:
- 在工作区,双击打开刚才导入的变量:(表明从第3行开始数据有效)

- 横坐标值要补偿0.1:(为了保证Simulink进行波形显示时,时间从0开始波形绘制完整,解决波形显示不全、显示不出来的问题)

- 运行程序段,完成后点击工作区的z变量检查一下,补偿好后如下图所示。

注:data1是第一步里导入数据时自定义的数据名字,将他赋给变量data,此后对示波器导入的不同数据,只需修改等号后面的名字data1即可。
3、在Simulink中放入模块“From workspace”,修改变量名,放入powergui进行FFT分析。
- 修改“from workspace”模块中的变量名称,与工作区内重新组合好的变量名z一致;

注(波形为折线形、数据点显示不完整):同步修改powergui和系统采样时间,在Configuration Parameters/Solver/Solver selection/,修改为Fixed-step,并给出采样时间。
- 点击“powergui”进行波形FFT分析;

注:(①Name内没有选项的情况):在Configuration Parameters/Data Import/Export/Save to workspace or file/,取消勾选"signal simulation output"。
(③Number of cycles周期数的选择):选择为1个周期,则横坐标间隔单位为1;选择2个周期,横坐标间隔单位为0.5。
(④Max frequency最大频率的选择):最大频率与基波频率的倍数,决定了横坐标显示数据的个数。如图中给出1000/41.66 = 24.003,则横坐标显示24个柱状形。文章来源:https://www.toymoban.com/news/detail-814273.html
- 导出波形,微调。把背景线去掉,否则后续在Visio里处理图片很麻烦。

二、用MATLAB自定义横纵坐标轴绘图(plot函数)
- 与上述组合数据z的过程一致,三个步骤:导入数据、定义横纵坐标数据变量、plot一下:(在电机控制中,可以用于绘制横轴为alpha,纵轴为beta的出图)。
% 数据类型为列数据
data = data1;
x = data(3:2002,1); % ("横坐标范围",“纵坐标范围”),("第i行":"第j行","第k列")
y = data(3:2002,2); % 取数据的第2列为纵坐标数据
z = plot(x,y); % 组合后:plot函数逗号前为横坐标数据,逗号后为纵坐标数据

- 如果觉得数据点太密集,修改为每10个点取一个数据:(要在冒号间再增添一个冒号:看一下对比效果。有没有发现波峰变尖了,这是由于数据点采集不够导致的)
x = data(3:30:2002,1); %从第3行到第2002行,每30个取一个数据点;取第1列里的数据

- 想将示波器分析的THD数据直接用柱状图形式输出:(采用bar函数 ,这里以正弦波示意一下)
z = bar(x,y);

此外,放一个后续visio处理出图的教程: 【导出Simulink中的scope数据,用MATLAB的plot函数进行曲线绘制,以及后续Visio论文出图处理。自定义横纵坐标轴变量,不用背代码。】 https://www.bilibili.com/video/BV1QK411t7zJ/?share_source=copy_web&vd_source=571ee7745d512a8293189d83f511f927文章来源地址https://www.toymoban.com/news/detail-814273.html
如果此篇文章对您有帮助,记得评论告诉我(●'◡'●)
您的点赞和收藏是对写作者最大的鼓励!
到了这里,关于用MATLAB/Simulink对实验/仿真示波器保存的数据进行THD分析、MATLAB自定义横纵坐标轴绘图的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!