matlab显示adc波形
时间: 2025-06-14 21:35:54 浏览: 18
### MATLAB绘制ADC采集波形图
要在MATLAB中绘制ADC采集的波形图,可以按照以下方式实现。通常情况下,ADC的数据可以通过文件导入或者通过串口通信获取。以下是两种常见的方式:
#### 方法一:从CSV文件加载数据并绘制波形
如果ADC数据已经被导出为CSV文件,则可以直接使用`readtable`或`csvread`函数将其载入MATLAB,并进行必要的数据预处理后再绘制。
```matlab
% 加载CSV文件中的数据
data = csvread('adc_data.csv');
% 假设数据是以补码形式存储的 (如引用[2])
I_index = find(data >= 512);
data(I_index) = data(I_index) - 1024;
% 定义时间轴(假设采样率为12MHz)
fs = 12e6; % 采样率 [Hz]
time = (0:length(data)-1)/fs; % 时间向量 [秒]
% 绘制波形
figure;
plot(time, data, 'b-', 'LineWidth', 1.5);
xlabel('Time (s)');
ylabel('Amplitude');
title('ADC Waveform Plot');
grid on;
```
上述代码实现了从CSV文件读取数据、对补码数据进行转换以及绘制波形的功能[^2]。
---
#### 方法二:通过串口实时接收数据并绘制波形
当需要实时显示来自硬件设备的ADC数据时,可利用MATLAB的串口功能来捕获数据流并动态更新图表。
```matlab
% 初始化串口对象
s = serialport('COM3', 9600); % 替换'COM3'为实际端口号
configureTerminator(s, 'None');
global t;
global x;
global m;
global ii;
t = [];
m = [];
ii = 0;
% 设置绘图窗口
hFig = figure;
axesHandle = axes(hFig);
callbackFcn = @(~, ~) callbackFunction(s, axesHandle);
addlistener(s, 'DataAvailable', 'PostRead', callbackFcn);
function callbackFunction(sObj, ax)
persistent t m ii;
if isempty(t), t = []; end
if isempty(m), m = []; end
out = fscanf(sObj); % 以字符串类型读取数据
data = str2double(out); % 转化为数值型
if isnan(data) || isinf(data)
return;
end
t(end+1) = length(t)+1; % 更新时间戳
m(end+1) = data; % 存储新数据点
plot(ax, t, m, '-r', 'LineWidth', 1.5); % 动态更新曲线
xlim(ax, [max(1,t(end)-100), max(100,t(end))]);
ylim(ax, [-1, 3.6]);
drawnow limitrate;
end
pause(10); % 让程序运行一段时间
clear s; % 关闭串口连接
close(hFig);
```
此部分代码展示了如何配置串口参数并通过回调机制不断刷新图形界面[^3]。
---
#### 数据解释与注意事项
- **采样频率**:在设计系统时需明确指定ADC模块的工作频率。例如,在某些应用中可能采用的是12 MHz作为基础速率。
- **量化级数**:对于10比特精度的ADC而言,其输出范围应位于\[0, 1023\]之间;而对于12比特的情况则扩展至\[0, 4095\][^5]。
- **单位转换**:考虑到原始数字化后的整数值未必直接对应物理意义下的电压值,因此有必要依据具体电路条件完成相应映射关系建立。
---
阅读全文
相关推荐

















