2017-03-24 8 views

答えて

4

あなたは私たちは、10^-1から10^(-numel(A))に配列を作成し、Aの転置との要素ごとの乗算を行う(それ1 x N作るため)、その後、実際にこれがどのように機能するかを示すために結果

result = sum(A.' .* 10.^-(1:numel(A))); 
fprintf('%0.8f', result) 
% 0.12345678 

を合計することができますより小さなAベクターで実証することができる。これを考える

A = [1; 2; 3; 4]; 

tmp = 10.^-(1:numel(A)); 
% 0.1000 0.0100 0.0010 0.0001 

tmp = A.' .* tmp; 
% 0.1000 0.0200 0.0030 0.0004 

result = sum(tmp); 
% 0.1234 

代替方法は10^1

10^(numel(A))から
result = sum(A.' ./ 10.^(1:numel(A))); 

で別の方法をA要素単位を分割することであろうASCIIコードを使用して文字列にあなたの数字を変換することで、その後に'0.'を付加文字列の先頭をdouble doubleに変換すると、str2double

result = str2double(['0.' A.' + '0']); 
+0

カンマの後にMatlabが実際に検討している桁数を聞かせてもらえますか?例えば。 'N = 200'とします。 – user3285148

+0

Matlabのコンマからどのくらい離れているかに関するルールはありますか? – user3285148

+0

@ user3285148あなたは浮動小数点表現によって制限されているので、 'N = 200'は動作しません。その精度で数値を表すには、可変精度の算術演算または文字列を使用する必要があります – Suever

関連する問題