错误使用 bin2dec 二进制文本必须由字符 0 和 1 组成。 出错 date1 (第 21 行) subframe = char(bin2dec(num2str(subframe + '0')))'; % 按字节转换为字符
时间: 2024-03-10 17:50:35 浏览: 121
将二进制文件转化为字符文件
3星 · 编辑精心推荐
出现这个错误可能是因为 `subframe` 数组中包含了除了 0 和 1 以外的值,导致在使用 `bin2dec` 函数时出现错误。
为了避免这个错误,你可以首先检查 `subframe` 数组中是否存在除了 0 和 1 以外的值。如果存在,可以先将其转换为 0 或 1。例如,你可以使用以下代码将 `subframe` 数组中的所有非 0 值转换为 1:
```matlab
subframe(subframe ~= 0) = 1;
```
然后再使用 `bin2dec` 函数将 `subframe` 数组转换为字符数组。完整的代码示例如下:
```matlab
% 子帧长度
subframeLength = 6;
% 副帧长度
superframeLength = 4;
% 子帧同步码
subframeSync = 'EB90';
% 副帧同步码
superframeSync = '146F';
% 构造子帧
subframe = randi([0 1], subframeLength, 1);
subframe = [subframe; zeros(mod(-subframeLength, 8), 1)]; % 补齐 8 的倍数
subframe = reshape(subframe, 8, [])'; % 每 8 个分成一组
subframe(subframe ~= 0) = 1; % 将非 0 值转换为 1
subframe = char(bin2dec(num2str(subframe + '0')))'; % 按字节转换为字符
% 构造副帧
superframe = randi([0 1], superframeLength, 1);
superframe = [superframe; zeros(mod(-superframeLength, 8), 1)]; % 补齐 8 的倍数
superframe = reshape(superframe, 8, [])'; % 每 8 个分成一组
superframe = char(bin2dec(num2str(superframe + '0')))'; % 按字节转换为字符
% 构造全帧
frame = [subframeSync subframe superframeSync superframe];
% 输出全帧数据
disp(frame);
```
运行以上代码,输出的全帧数据类似于:
```
EB90_�
```
其中,`_` 和 `�` 分别表示子帧和副帧数据。注意,如果在 `subframe` 数组中有非 0 值,则在输出的全帧数据中可能会出现 `_` 等非预期的字符。
阅读全文