MATLAB编程全解析:从基础绘图到高效代码优化
立即解锁
发布时间: 2025-08-20 02:33:09 阅读量: 2 订阅数: 8 

# MATLAB编程全解析:从基础绘图到高效代码优化
## 1. MATLAB绘图基础
### 1.1 常见绘图函数
MATLAB具备强大的绘图能力,能生成二维、三维图形,显示图像以及创建和播放动画。在信号处理应用中,最常用的两个绘图函数是`plot`和`stem`。
- `plot(x,y)`:用于生成连接数据点的直线图,数据点为`{(x(1),y(1)),(x(2),y(2)),...,(x(N),y(N))}`。
- `stem(x,y)`:以“棒棒糖”形式展示数据。
示例代码如下:
```matlab
tt = 0:0.4:4;
xx = sin(0.7*pi*tt + 0.1*pi);
subplot(2,1,1)
plot( tt, xx )
title('Example of plot( tt, xx)')
subplot(2,1,2)
stem( tt, xx )
title('Example of stem( tt, xx)')
```
### 1.2 图形窗口操作
MATLAB绘图时会将图形显示在图形窗口中。可以同时打开多个图形窗口,但只有一个是活动窗口。绘图命令的输出会导向活动窗口。
- `figure(n)`:弹出编号为`n`的新图形窗口,若窗口已存在则使其成为活动窗口。
- 可通过`figure`命令控制窗口属性,如大小、位置、颜色等。
### 1.3 多图绘制
使用`subplot`函数可在一个窗口中绘制多个图形。该函数仅将图形窗口划分为多个小块,并不进行实际绘图。
- `subplot(3,2,tile number)`:将图形窗口划分为3行2列的小块,`tile number`指定绘图位置。
### 1.4 图形打印与保存
使用`print`命令可将图形打印到打印机或保存为文件。
- 打印到默认打印机:直接输入`print`。
- 保存为文件:需指定设备格式和文件名,如保存为PNG格式:`print -dpng myplot`。
## 2. 编程结构
### 2.1 函数式编程
MATLAB支持函数式编程,可嵌套函数调用。例如,计算$\sum_{n=1}^{L} \log (|x_n|)$,可使用以下代码:
```matlab
sum( log( abs(x) ) )
```
### 2.2 内置函数
许多MATLAB函数可同时处理数组和标量。例如,`cos(x)`会返回一个与`x`大小相同的数组,包含`x`中每个元素的余弦值。
```matlab
cos(x) =
⎡
⎢⎢⎢⎣
cos(x1,1) cos(x1,2) · · · cos(x1,n)
cos(x2,1) cos(x2,2) · · · cos(x2,n)
...
...
...
...
cos(xm,1) cos(xm,2) · · · cos(xm,n)
⎤
⎥⎥⎥⎦
```
### 2.3 程序流程控制
MATLAB可使用`if`语句、`while`循环、`for`循环和`switch`语句控制程序流程,具体用法可通过`helpwin`命令查看。
## 3. MATLAB脚本与函数
### 3.1 MATLAB脚本
可将在MATLAB命令提示符下输入的表达式存储在扩展名为`.m`的文本文件中,作为脚本执行。例如,将上述绘图代码保存为`plotstem.m`,在命令提示符下输入`plotstem`即可运行。
### 3.2 自定义函数
可编写自己的函数并添加到MATLAB环境中。函数文件也是`.m`文件,文件首行必须是`function`关键字,其后指定函数的输入和输出参数。
示例函数`foo.m`:
```matlab
function y = foo( x, L )
%FOO get last L points of x
% usage:
% y = foo( x, L )
% where:
% x = input vector
% L = number of points to get
% y = output vector
N = length(x);
if( L > N )
error('input vector too short')
end
y = x((N-L+1):N);
```
调用示例:
```matlab
aa = foo( (1:2:37), 7 );
```
### 3.3 创建剪辑函数
以`clipper.m`函数为例,该函数接受信号向量和标量阈值作为输入,返回剪辑后的信号向量。
```matlab
function y = clipper( x, Limit )
%CLIPPER saturate mag of x[n] at Limit
% when |x[n]| > Limit, make |x[n]| = Limit
% keeping the sign of x[n]
% usage: y = clipper( x, Limit )
% x = input signal vector
% Limit = limiting value
% y = output vector after clipping
[nrows, ncols] = size(x);
if( ncols ~= 1 & nrows ~= 1 )
error('CLIPPER: input not a vector')
end
Lx = max([nrows ncols]);
for n=1:Lx
if( abs(x(n)) > Limit )
x(n) = sign(x(n))*Limit;
end
end
y = x;
```
该函数包含以下四个要素:
- **输入输出定义**:明确函数的输入和输出参数。
- **自我文档化**:使用`%`开头的注释行,通过`helpwin clipper`可查看帮助信息。
- **大小和错误检查**:使用`size`函数检查输入是否为向量。
- **实际函数操作**:使用`for`循环对向量元素进行剪辑。
### 3.4 调试MATLAB M文件
MATLAB是交互式环境,可通过检查工作区变量进行调试。以下是一些常用调试命令:
- `dbstop`:设置断点,`dbstop if error`可在出错时给出提示。
- `dbstep`:逐行执行代码。
- `dbcont`:恢复正常程序执行。
- `dbquit`:退出调试模式。
- `keyboard`:插入到M文件中可暂停程序执行。
##
0
0
复制全文
相关推荐










