我正在做一個Matlab無線通信算法,計算丟失量和計算不同距離處的疏鬆度時的對數模型偏差。在matlab中表示長數
一切正常,這是我的函數: D0 =距離的參考值(始終相同) 農佈雷=這是具有矩陣在第一列有距離250X2一個.MAT文件(從那裏我把不同的值),第二列的值有 Lfs2 =這是失去了在那裏的距離是D0
Lfs2 = -20*log10((4*pi*d0)/((299792458)/(freq*10^6)));
我剛纔提出的算法和一切工作正常,我250X2矩陣,而只是爲了測試目的我用4246x2矩陣製作了一個藍牙信號模型,但是當我用這個值做我的算法時,我的n(丟失因子)正確計算,但是m Ÿdesv因素不是..這是因爲數量太大,這是INF
function [ n , desv ] = perd_desv(d0, Lfs2, nombre)
%UNTITLED Summary of this function goes here
% Detailed explanation goes here
% Comprobamos que Pld0 es una perdida y no una atenuación
if Lfs2>0
Lfs2 = -Lfs2;
end
Lfs2;
%Nombre = 'Practica28.mat';
load(nombre);
medida = Pl(:,2);
distancia = Pl(:,1);
% Calculo la n %
syms n;
p = 0;
for i=1:size(medida,1)
p = p + (medida(i)-(-Lfs2)-10*n*log10(distancia(i)/d0))^2;
end
perdida = double(solve(diff(p)));
n = sprintf('%.2f',perdida);
% Calculo de la desv
w = 0;
for i=1:size(medida,1)
w = w + (1/size(medida,1))*(medida(i)-(Lfs2)-10*perdida*log10(distancia(i)/d0))^2;
end
w = 0;
for i=1:size(medida,1)
w = w + (1/size(medida,1))*(medida(i)-(-Lfs2)-10*perdida*log10(distancia(i)/d0))^2;
end
desv = sprintf('%.2f',double(sqrt(w)));
事情is..I知道,在Matlab有symsum爲series..but的總和我不能瞭解如何使用symsum定義這個算法..我不知道我怎麼能代表數量,以適應我的變化..
謝謝你這麼多
其他要點如何?你是否總是擁有大於零的尺寸(medida,1)?只需添加一個條件斷點,看看這是否是問題。 – 2014-10-07 15:03:31
感謝您的建議,使用該屬性我可以更快地計算Lfs2 ..但這只是一次升級,因爲Lfs2是您需要計算一次的因素。我沒有發佈整個代碼,因爲不那麼無聊......但你是對的。我有一個矩陣(2426x2),第一列有距離,第二列有信號的功率值。我想也許更多的東西是錯的。它真的很煩人的是,當你使用我的算法與一個較短的矩陣(250x2)我的算法是非常準確的(不那麼快..但現在這不是問題)謝謝你的回答 – neteot 2014-10-07 15:05:01
在你的代碼中,有兩個來自分區的「無窮大」的潛在來源:'1/size(medida,1)'是'1/0'或' DISTANCIA(I)/ d0'。現在,**你確定**是否消除了所有這些可能的原因?例如,如果你計算'x = distancia/d0'並檢查變量'x',那麼你有無窮無盡嗎? – 2014-10-07 15:27:06