matlab代码怎么把四个子图放在一个图里比较
时间: 2024-10-27 22:15:00 浏览: 13
【matlab代码】生成一个方波信号
在MATLAB中,如果你想把四个子图放在同一张图里比较,可以使用`subplot`函数或`gridspec`来创建一个多列布局。这里是一个示例,展示如何在一个图中放置四个子图:
```matlab
% 创建一个2x2网格
[row, col] = size(subplots(1)); % 获取子图数量
gs = gridspec(row, col, 'width_ratios', [1 1 1 1], 'height_ratios', [1 1]); % 使用gridspec设定比例
% 画出每个子图
figure;
for i = 1:row * col
ax = subplot(gs, i);
% 分别对应原始信号、0.1Hz采样、0.2Hz采样和0.5Hz采样的数据
if mod(i, row) == 1
% 原始信号
plot(ax, t, bold_signal);
title(ax, 'Original Signal');
else
% 高频采样信号
fs = (i-row+1)/col; % 计算对应的采样频率
sampled_data = interp1(t, bold_signal, (0:1:512*fs) / fs, 'linear');
plot(ax, (0:1:512*fs) / fs, sampled_data);
title(ax, ['Sampled Signal at ' num2str(fs) ' Hz']);
end
% 设置子图的共同属性
xlim(ax, [0 512]);
xlabel(ax, 'Time (s)');
end
% 添加网格线和标题
set(gcf, 'Position', get(gcf, 'Position') - [0 0 0.01 0.01]); % 移除边框留白
title('Comparison of Different Sampling Frequencies');
% 调整子图之间的间距
set(gcf, 'TickLength', [], 'Box', 'off');
```
这个例子中,我们首先创建了一个2x2的网格,然后针对每个子图绘制不同的信号。通过`mod`函数和条件判断,区分了原始信号和其他不同采样频率的信号。
阅读全文