matlab如何绘制对比曲线
时间: 2025-06-20 07:45:41 浏览: 21
### Matlab 绘制对比曲线的方法与示例
在 MATLAB 中绘制对比曲线通常用于比较不同数据集之间的差异或趋势。以下是具体方法和示例:
#### 使用 `plot` 函数绘制基本对比曲线
最简单的方式是利用 `plot` 函数在同一张图表中绘制多条曲线。每组数据对应一条曲线,通过不同的颜色或线型加以区分。
```matlab
% 定义两组数据
x = linspace(0, 2*pi, 100); % 创建 x 轴数据
y1 = sin(x); % 第一组 y 数据 (正弦波)
y2 = cos(x); % 第二组 y 数据 (余弦波)
% 绘制两条曲线
figure;
plot(x, y1, 'r-', 'LineWidth', 2); hold on; % 红色实线表示第一条曲线
plot(x, y2, 'b--', 'LineWidth', 2); % 蓝色虚线表示第二条曲线
xlabel('角度 (弧度)', 'FontSize', 14);
ylabel('幅值', 'FontSize', 14);
title('正弦波 vs 余弦波 对比图', 'FontSize', 16);
legend('sin(x)', 'cos(x)');
grid on;
hold off;
```
上述代码展示了如何使用 `plot` 函数绘制两条具有不同样式(红色实线和蓝色虚线)的曲线,并添加了标签、标题以及网格[^1]。
---
#### 实现局部放大的 “图中图”
如果需要对某些区域进行详细分析,则可以借助 `axes` 和 `subplot` 来创建嵌套的小图以展示特定范围内的细节。
以下是一个完整的例子,演示如何绘制全局视图并附加一个局部放大子图:
```matlab
clc; clear; close all;
% 主函数定义
t = -5:0.01:5;
y = 1 ./ (t - 3);
% 创建主图形窗口
figure;
main_axes = axes('Position', [0.1, 0.1, 0.8, 0.7]); % 设置主图位置
plot(main_axes, t, y, 'k-', 'LineWidth', 1.5); % 黑色线条为主曲线
set(gca, 'XLim', [-5, 5], 'YLim', [-10, 10]);
xlabel('时间 t');
ylabel('响应 y(t)');
title('整体曲线');
% 添加局部放大图
zoom_axes = axes('Position', [0.55, 0.55, 0.3, 0.3]); % 小图的位置参数
xlim(zoom_axes, [2.9, 3.1]); % 局部横坐标范围
ylim(zoom_axes, [-100, 100]); % 局部纵坐标范围
plot(zoom_axes, t, y, 'r:', 'LineWidth', 1.5); % 红色点划线作为局部显示
axis(zoom_axes, 'tight'); % 自动调整边界至紧贴数据
box(on); % 显示边框
text(3.5, 50, '局部放大区', 'Color', 'blue'); % 注释指向局部放大部分
```
此程序片段实现了大图上的主要曲线及其附近某一小段区域的高精度呈现[^2]。
---
#### 利用 ROC 曲线进行性能对比
当涉及分类器评估时,ROC 曲线是一种常见的工具。下面是如何基于真实标签 (`labels`) 及预测得分 (`scores`) 构建两个模型间的 ROC 曲线对比实例:
```matlab
% 假设已知的真实类别向量 labels 和两类评分 scores_modelA, scores_modelB
labels = [zeros(1, 50), ones(1, 50)]; % 正负样本各占一半
scores_modelA = randn(1, 100) * 0.5 + 0.7; % 模型 A 的分数分布偏移
scores_modelB = randn(1, 100) * 0.3 + 0.8; % 模型 B 更优一些
[X_A, Y_A, T_A, AUC_A] = perfcurve(labels, scores_modelA, 1); % 计算 Model A 的 ROC 参数
[X_B, Y_B, T_B, AUC_B] = perfcurve(labels, scores_modelB, 1); % 同理计算 Model B
figure;
plot(X_A, Y_A, '-s', X_B, Y_B, '--o'); % s 表示方形标记; o 圆形标记
xlabel('False Positive Rate');
ylabel('True Positive Rate');
title(['ROC Curve Comparison | AUC(A): ', num2str(AUC_A), '; AUC(B): ', num2str(AUC_B)]);
legend({'Model A'; 'Model B'}, 'Location', 'SouthEast');
grid on;
```
这段脚本生成了一个包含两种算法效果评价指标——TPR/FPRTPR/FPR变化关系图,并标注各自的面积下曲线下面积(Area Under the Curve, AUC),从而直观反映哪个方案表现更好[^3]。
---
阅读全文
相关推荐


















