я пытаюсь реализовать свой собственный код для plomb (потому что у меня нет Matlab 2014b), вот мой код
function [PLS,f]=plomb(x,t);
diff=t(2)-t(1);
fs=1/diff;
x_mean=mean(x);
variance=var(x);
f=fs*(0:length(x)-1)/length(x);
part1=sum(((x-x_mean).*cos(2*pi*f*t)))^2/sum(cos(2*pi*f*t).^2);
part2=sum(((x-x_mean).*sin(2*pi*f*t)))^2/sum(sin(2*pi*f*t).^2);
PLS=(part1+part2)/(2*variance);
это делается с помощью следующего сайта
http://www.mathworks.com/help/signal/ref/plomb.html?refresh=true
я проверил этот код на следующем простом синусоидальном сигнале
>> t=0:0.01:2.93;
>> x=sin(2*pi*10*t);
но я получил ошибку
[PLS,f]=plomb(x,t);
Error using *
Inner matrix dimensions must agree.
Error in plomb (line 7)
part1=sum(((x-x_mean).*cos(2*pi*f*t)))^2/sum(cos(2*pi*f*t).^2);
i did not get point,what i am doing incorrectly?thanks in advance
ОТРЕДАКТИРОВАНО:
я изменил свой код на это
for k=1:length(x)
part1(k)=sum(((x-x_mean).*cos(2*pi*f(k)*t)))^2/sum(cos(2*pi*f(k)*t).^2);
part2(k)=sum(((x-x_mean).*sin(2*pi*f(k)*t)))^2/sum(sin(2*pi*f(k)*t).^2);
PLS=(part1+part2)/(2*variance);
end
is it ok?