다른 거리에서 느슨한 점을 계산할 때 대수 모델의 손실과 편차를 계산하는 Matlab의 무선 통신 알고리즘을 수행하고 있습니다.matlab에서 긴 숫자를 나타 내기
모두 잘 작동이 내 함수 (항상 같은) 기준 D0 = 거리 브레 =이 어디에서 (행렬의 첫번째 열이 거리를 어디에서 250X2 갖는 .mat 파일이며 나는 다른 값을했다)과 두 번째 열은 값을 Lfs2을 가지고 = 거리가 D0
Lfs2 = -20*log10((4*pi*d0)/((299792458)/(freq*10^6)));
난 그냥 알고리즘을 만들어 모든 것을 내 250X2 매트릭스 있지만, 단지 테스트를위한 잘 작동 곳은 손실됩니다 목적 나는 4246x2 행렬로 블루투스 신호 모델을 만들었지 만이 값으로 알고리즘을 수행하면 내 n (손실 된 요소)이 올바르게 계산되지만 m y를 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)));
것은이 매트랩 series..but의 합에 대한 symsum이 내가 할 수없는 것을 알고 is..I입니다 너무 큰 때문입니다
이
다른 점은 어떻습니까? 당신은 항상'size (medida, 1)'가 0보다 큰가요? 그저 조건부 중단 점을 추가하여 이것이 문제가되는지 확인하십시오. –
조언 해 주셔서 감사합니다. Lfs2를 더 빨리 계산할 수 있습니다. 그러나 Lfs2는 한 번 계산할 필요가있는 요소이기 때문에 이것은 단지 업그레이드입니다. 너무 지루하지 않기 위해 전체 코드를 게시하지는 않았지만 당신이 옳습니다. 첫 번째 열에는 거리가 있고 두 번째 열에는 신호의 전력 값이있는 행렬 (2426x2)이 있습니다. 어쩌면 뭔가 더 잘못된 것 같아요. 그게 정말 짜증나는 이유는 당신이 짧은 매트릭스 (250x2)와 내 알고리즘을 사용할 때 내 알고리즘은 매우 정확합니다 (그렇게 빠르지는 않습니다 ..).하지만 지금은 문제가되지 않습니다) 당신의 대답에 대해 감사합니다 – neteot
부서에서 "무한"의 두 가지 잠재적 인 출처가 있습니다 : 1/size (medida, 1)가'1/0'이거나' distancia (i)/d0'. 자, **이 모든 가능한 원인을 제거했는지 ** 확인 했습니까? 예를 들어,'x = distancia/d0'를 계산하고 변수'x'를 검사하면 거기에 무한대가 있습니까? –