мне нужно, чтобы объединить каждый столбец в строке в один номерОбъединить столбцы в один номер в строке
A = [8 1 6
3 5 7
4 9 2];
Моя цель состоит в том, чтобы иметь такую форму:
B = [816; 357; 492]
мне нужно, чтобы объединить каждый столбец в строке в один номерОбъединить столбцы в один номер в строке
A = [8 1 6
3 5 7
4 9 2];
Моя цель состоит в том, чтобы иметь такую форму:
B = [816; 357; 492]
@Suever: Я не понимаю, почему вы удалили дискуссию, я новичок в этой группе; В любом случае, я поставил все тесты, которые я сделал, и результат:
`function testtttt()
%%%% Solution1 stackoverflow %%%%
%A=importdata('file.mat');
%B= (A * flip(10.^(0:size(A, 2)-1))')
%Result: B =
% 2.1194e+17
% 2.4989e+17
% 3.5458e+16
% 2.3669e+17
% 1.7582e+17
%%%%%%%%% Solution2 Matlab Forum %%%%%%%%%%%
% A=importdata('file.mat');
% B= num2str (A * flip(10.^(0:size(A, 2)-1))')
%Result: B =
% 211935227421357568
% 249886223928308032
% 35457727150655748
% 236691335688358080
% 175820284169194336
%%%%%%%%% Solution3 Matlab Forum %%%%%%%%%%%
% A=importdata('file.mat');
% B= dec2hex(str2num(strcat(num2str(A)')'))
%Result: B =
% D0
% E7
% 20
% E9
% A1
% 18
% 47
% 8C
% F5
% F7
% 28
% F8
.....
%%%%%%%%% Solution4 Matlab Forum %%%%%%%%%%%
A = importdata('file.mat'); % file.mat contains my matrix
[l c ] = size (A) ;
%B = cell (l,1);
for i =1 : l
B{i} = A(i, [1:16]) %however b{i} = a(i, :)
end
%Result: B =
{
[1,1] =
208 15 217 252 128 35 50 252 209 120 97 140 235 220 32 251
[1,2] =
231 174 143 43 125 66 49 143 48 139 81 103 154 229 93 229
[1,3] =
32 10 237 65 224 22 83 238 31 15 252 27 179 48 173 221
[1,4] =
233 18 178 101 90 109 225 184 210 168 183 185 190 169 96 205
[1,5] =
161 133 149 18 115 65 120 123 163 227 105 157 98 240 221 142
........
endfunction `
the best solution is the third that i found in matlab forum. Then the result found in solution 2 are caused by the using of octave. Thank you for your help.
Есть несколько способы, которыми вы можете это сделать. Самый быстрый, вероятно, будет считать, что каждая строка вашей матрицы содержит цифры в базе-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
Еще медленнее, но возможное решение было бы преобразовать строки в строку, а затем преобразовать строку обратно в число.
B = str2double(reshape(sprintf('%d', A), size(A, 2), []));
Также 'B = str2num (обугленного (A + '0'));' –
@Suever: Я не понимаю, почему вы удалили в любом случае, я поставил все те тесты, которые я сделал, и результат: –
Лучшее решение - третье. @Suever большое спасибо за помощь ур. –