在MATLAB中生成二进制信号的方法可分为以下两类,具体取决于应用场景:
一、生成随机二进制信源
适用于数字通信系统中的随机数据生成
随机序列生成 使用 `randi([0,1],m,n)` 生成 `m×n` 的随机二进制矩阵,元素为0或1。
```matlab
st = randi([0,1],10,100); % 生成10个100位的随机二进制序列
```
二进制信号生成
通过卷积将随机序列转换为基带信号,例如二进制NRZ(非归零矩形)信号:
```matlab
Ts = 1; % 码元时间
N_sample = 10; % 每个码元内采样点数
n = 0:N-1;
da = sign(randn(1,N)); % 生成随机序列
st = sigexpand(da,N_sample); % 转换为二进制序列
st = conv(st,ones(1,N_sample)); % 生成基带信号
```
二、模拟信号量化为二进制信号
适用于模拟-数字转换(ADC)
量化函数
使用 `round` 函数将模拟信号量化为二进制值,需指定量化位数:
```matlab
% 假设模拟信号为x
N_bits = 8; % 量化位数
x量化 = round(x * (2^N_bits - 1)) / (2^N_bits - 1);
```
示例代码
生成均匀量化的二进制信号:
```matlab
fs = 1000; % 采样频率
t = 0:1/fs:1-1/fs; % 时间向量
x = sin(2*pi*10*t); % 模拟信号
x量化 = round(x * 255) / 255; % 8位量化
```
三、其他转换方法
十进制/四进制转二进制: 使用 `dec2bin` 函数(仅限整数)或自定义函数实现。 调制信号生成
以上方法可根据具体需求选择,建议优先参考权威资料或实际应用场景进行验证。