You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

Matlab中十进制数组转换方法及将[1,2,3,4]转为单位矩阵的实现

Matlab 实用操作解答

问题1:如何在Matlab中转换十进制数值数组?

得先明确你说的“转换”具体场景,我分两种常见情况给你拆解:

情况1:转成其他进制的数值数组

如果是要把十进制数组转成二进制、十六进制这类进制的数值数组,用Matlab自带的进制转换函数就行,比如dec2bin(转二进制)、dec2hex(转十六进制),不过要注意这些函数默认返回字符数组,需要再转成数值类型:

% 示例:十进制数组转二进制数值数组
dec_array = [10, 20, 30];
bin_char = dec2bin(dec_array); % 得到字符形式的二进制数组
bin_num_array = double(bin_char) - 48; % 转成数值数组(利用ASCII码差值,'0'对应48)

转十六进制的话,把dec2bin换成dec2hex即可,要是涉及A-F的字符,可以配合hex2dec循环处理,确保得到纯数值数组。

情况2:转成不同数据类型的十进制数组

如果是想把默认的double类型十进制数组转成int8、uint16这类整数类型,直接用类型转换函数或者cast就搞定:

% 示例:double转int32类型
original_array = [1.2, 2.8, 3.5];
int_array = int32(original_array); % 自动取整,结果为[1, 3, 4]
% 或者用cast函数
uint_array = cast(original_array, 'uint8'); % 转成无符号8位整数,结果同样取整

问题2:如何将数组[1,2,3,4]转换为目标对角矩阵?

这个操作超省心,Matlab的diag函数就是专门干这个的!当你传入一维数组时,它会自动生成以该数组元素为对角线的方阵:

vec = [1,2,3,4];
target_matrix = diag(vec);

运行后得到的矩阵就是你要的:

1     0     0     0
0     1     0     0
0     0     1     0
0     0     0     1

要是你只是想生成4x4单位矩阵,用eye(4)更直接,但因为你的数组元素刚好是1,diag(vec)完全适用——哪怕数组元素不是1,比如[2,3,4,5],也能生成对应对角线的矩阵。

内容的提问来源于stack exchange,提问作者w404336713

火山引擎 最新活动