### 应用MATLAB图形函数和绘图实例
#### 知识点一:绘制贝塞尔函数图像
在MATLAB中,可以通过内置函数`besselj`来计算贝塞尔函数,并利用`plot`函数来绘制其图像。下面通过一个具体例子来展示如何绘制不同阶数的贝塞尔函数图像。
**代码示例:**
```matlab
% 定义变量
x = 0:0.2:12;
y1 = besselj(1, x); % 第一阶贝塞尔函数
y2 = besselj(2, x); % 第二阶贝塞尔函数
y3 = besselj(3, x); % 第三阶贝塞尔函数
% 创建图形窗口
figure(1)
subplot(2,2,1)
% 绘制三条曲线
h = plot(x, y1, x, y2, x, y3);
% 设置线条宽度、样式和颜色
set(h, 'LineWidth', 2, 'LineStyle', {'--';':';'-.'}, 'Color', {'r';'g';'b'});
% 设置坐标轴范围
axis([0 12 -0.5 1])
% 添加网格
grid on
% 设置X轴和Y轴标签
xlabel('Time')
ylabel('Amplitude')
% 添加图例
legend(h, 'First', 'Second', 'Third')
% 添加标题
title('Bessel Functions')
% 在图像上添加文本标注
[y, ix] = min(y1);
text(x(ix), y, 'First Min \rightarrow', 'HorizontalAlignment', 'right')
% 打印图像
print('-depsc-tiff', '-r200', 'myplot')
```
**知识点说明:**
1. **函数调用:** 使用`besselj(nu, x)`计算第一类贝塞尔函数。
2. **图形设置:** `subplot`用于创建子图;`plot`绘制曲线;`set`设置线条属性;`axis`设置坐标轴范围。
3. **图例与注释:** `legend`添加图例;`text`添加文本标注。
#### 知识点二:绘制正弦波及其变形
**代码示例:**
```matlab
% 定义时间变量
t = 0:pi/100:2*pi;
% 计算正弦波
y = sin(t);
% 绘制正弦波
plot(t, y)
grid on
% 绘制多条正弦波
y2 = sin(t - 0.25);
y3 = sin(t - 0.5);
plot(t, y, t, y2, t, y3)
% 定义线条类型
plot(t, y, '-', t, y2, '--', t, y3, ':')
% 绘制数据点
x = 0:pi/15:4*pi;
y = exp(2*cos(x));
plot(x, y, 'r+')
% 进一步设置图形
plot(x, y, '-r', x, y, 'ok')
% 设置不同线条类型
y1 = exp(2*cos(x));
y2 = exp(2*sin(x));
plot(x, y1, '-*k', x, y2, '-.ok')
```
**知识点说明:**
1. **绘制单个正弦波:** 使用`plot`函数。
2. **绘制多个正弦波:** 可以通过在同一图中多次调用`plot`来实现。
3. **设置线条类型:** 使用`plot`中的第三个参数来指定线条样式。
4. **绘制数据点:** 使用`'+'`符号作为数据点。
5. **自定义线条样式和颜色:** 结合`'-'`、`'*'`等符号以及颜色字母(如`'k'`表示黑色)。
#### 知识点三:矩阵绘图
**代码示例:**
```matlab
% 生成矩阵
z = peaks;
% 绘制矩阵线条
plot(z)
% 变换方向绘图
y = 1:length(peaks);
plot(peaks, y)
```
**知识点说明:**
1. **`peaks`函数:** 生成一个预设的矩阵。
2. **绘制矩阵线条:** 可以将矩阵视为一系列数据点进行绘制。
3. **变换方向:** 通过改变`plot`函数的参数顺序来实现。
#### 知识点四:双Y轴绘图及混合坐标轴
**代码示例:**
```matlab
% 定义变量
t = 0:pi/20:2*pi;
y = exp(sin(t));
% 使用双Y轴绘制
plotyy(t, y, t, y, 'plot', 'stem')
% 混合线性轴与对数轴
t = 0:900;
A = 1000;
a = 0.005;
b = 0.005;
z1 = A * exp(-a*t);
z2 = sin(b*t);
[haxes, hline1, hline2] = plotyy(t, z1, t, z2, 'semilogy', 'plot');
axes(haxes(1))
ylabel('Semilog Plot')
axes(haxes(2))
ylabel('Linear Plot')
set(hline2, 'LineStyle', '--')
```
**知识点说明:**
1. **`plotyy`函数:** 可以同时在同一个图中绘制两个不同的Y轴数据。
2. **混合坐标轴:** 通过设置其中一个坐标轴为对数坐标轴,另一个为线性坐标轴。
#### 知识点五:轴的限制与标记
**代码示例:**
```matlab
% 定义变量
x = -pi:0.1:pi;
y = sin(x);
% 绘制正弦波
plot(x, y)
% 设置X轴标记
set(gca, 'XTick', -pi:pi/2:pi)
set(gca, 'XTickLabel', {'-pi', '-pi/2', '0', 'pi/2', 'pi'})
% 设置坐标轴标签和标题
xlabel('\pi \leq \Theta \leq \pi')
ylabel('sin(\Theta)')
title('Plot of sin(\Theta)')
% 添加文本标注
text(-pi/4, sin(-pi/4), '\leftarrow sin(-\pi / 4)', ...
'HorizontalAlignment', 'left')
% 设置线条颜色和宽度
set(findobj(gca, 'Type', 'line'), 'Color', [0.5 0.5 1], ...
'LineWidth', 2)
```
**知识点说明:**
1. **轴的限制:** 通过`axis([xmin, xmax, ymin, ymax])`设置。
2. **标记设置:** 使用`set(gca, 'XTick', ...)`和`set(gca, 'XTickLabel', ...)`来设置X轴的刻度和标签。
3. **添加图例和注释:** 使用`xlabel`、`ylabel`、`title`和`text`等函数。
4. **自定义线条属性:** 通过`findobj`和`set`来修改线条的颜色和宽度。
#### 知识点六:绘椭圆并调整比例
**代码示例:**
```matlab
% 定义变量
t = 0:pi/20:2*pi;
% 绘制椭圆
plot(sin(t), 2*cos(t))
grid on
% 调整图形比例
axis square
axis equal
axis equal tight
```
**知识点说明:**
1. **绘制椭圆:** 使用`plot`函数绘制。
2. **调整图形比例:**
- `axis square`:使图形保持正方形比例。
- `axis equal`:使X轴和Y轴单位长度相等。
- `axis equal tight`:自动调整图形大小以确保X轴和Y轴单位长度相等且没有额外的空间。
以上是MATLAB中绘制不同类型图形的一些基本方法和技巧,通过对这些示例的学习,可以更好地掌握MATLAB图形绘制的功能。