1 matlab
我需要将一行中的每一列组合成一个数字
A = [8 1 6
3 5 7
4 9 2];
Run Code Online (Sandbox Code Playgroud)
我的目标是拥有这种形式:
B = [816; 357; 492]
Run Code Online (Sandbox Code Playgroud)
有几种方法可以做到这一点.最快的可能是你的矩阵的每一行包含base-10中的数字并将这些数字组合在一起我们应该将第一列乘以10^2(100),将第二列乘以10^1(10),将第三列乘以10^0(1)然后求和跨越每一行.
我们可以很容易地用这个构成10的所有幂的单线程来实现这一点,然后执行矩阵乘法A以执行乘法和求和.
A = [8 1 6; 3 5 7; 4 9 2];
B = A * flip(10.^(0:size(A, 2)-1))';
% 816
% 357
% 492
Run Code Online (Sandbox Code Playgroud)
另一个较慢但可能的解决方案是将行转换为字符串,然后将字符串转换回数字.
B = str2double(reshape(sprintf('%d', A), size(A, 2), []));
Run Code Online (Sandbox Code Playgroud)