2016-07-15 8 views

答えて

0

@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. 
+0

ベストソリューションは3番目です。 @Sueverさん、本当にありがとうございました。 –

5

数がありますあなたがこれを行う方法。最も速いのは、行列の各行に10進数の数字が含まれているとみなし、これらの数字を組み合わせると、最初の列に10^2100)、2列目に10^110)、そして3番目の列に10^01)、各行を合計します。

10の累乗をすべて構成するこの1ライナーで簡単に達成でき、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), [])); 
+1

また 'B =はstr2num(CHAR(A +を '0'));' –

+0

@Suever:削除なかった理由私は理解していませんディスカッション、何らかの形で、私はすべてのテストと結果を入れます: –

関連する問題