在MATLAB中生成二进制整数可以通过多种方法实现,具体取决于你的需求(如整数转换、文件读写等)。以下是常用方法及示例:
一、整数转换方法
使用`dec2bin`函数 - 将十进制整数转换为二进制字符串(默认2位):
```matlab
decimalNumber = 123;
binaryString = dec2bin(decimalNumber);
disp(binaryString); % 输出 '1111011'
```
- 指定二进制位数:
```matlab
binaryString = dec2bin(decimalNumber, 8); % 8位二进制
disp(binaryString); % 输出 '01111011'
```
使用`format`函数
- 将整数格式化为二进制字符串:
```matlab
decimalNumber = 123;
binaryString = sprintf('%o', decimalNumber);
disp(binaryString); % 输出 '173'(八进制表示)
```
- 转换为固定点数后格式化:
```matlab
f = fi(decimalNumber, 1, 8);
binaryString = sprintf('%o', f.bin);
disp(binaryString); % 输出 '01111011'
```
矩阵转换
- 将矩阵元素转换为二进制字符串:
```matlab
matrix = [1, 2; 3, 4];
binaryMatrix = mat2cell(dec2bin(matrix, 8), [size(matrix, 1), size(matrix, 2)]);
binaryMatrix = cellfun(@num2str, binaryMatrix, 'UniformOutput', false);
binaryMatrix = categorical(binaryMatrix); % 转换为字符矩阵
disp(binaryMatrix);
```
- 将矩阵转换为二进制矩阵(无符号整数):
```matlab
matrix = [1, 2; 3, 4];
binaryMatrix = int2bit(matrix, 8);
disp(binaryMatrix); % 输出 8x4 的二进制矩阵
```
二、二进制数据读写
从文件读取二进制数据
```matlab
fid = fopen('data.bin', 'rb');
data = fread(fid, 'uint8', [rows, cols]);
fclose(fid);
```
- 读取二进制文件并按八位无符号整数存储到向量中。
将二进制数据写入文件
```matlab
fid = fopen('data.bin', 'wb');
fwrite(fid, data, 'uint8');
fclose(fid);
```
- 将向量数据以8位无符号整数形式写入文件。
三、其他注意事项
位数限制: `dec2bin`函数要求输入为非负整数且小于$2^{52}$,小数需使用`dectobin`函数。 复数转换
通过以上方法,你可以灵活实现十进制整数与二进制表示之间的转换,满足不同场景需求。