impulse 发表于 2018-4-3 21:37

xinhaochulixs 发表于 2018-4-3 19:14
主任,怎么仿真阶比的脉冲信号啊,谢谢

http://forum.vibunion.com/forum.php?mod=viewthread&tid=123498&highlight=%BC%C6%CB%E3%BD%D7%B1%C8%B8%FA%D7%D9
这儿有个简单的模拟键相脉冲

Samuel95 发表于 2018-8-21 22:24

楼主可否帮助下小弟,我也有关于重采样的问题

impulse 发表于 2018-8-22 08:43

Samuel95 发表于 2018-8-21 22:24
楼主可否帮助下小弟,我也有关于重采样的问题

什么问题?

Samuel95 发表于 2018-8-22 15:38

impulse 发表于 2018-8-22 08:43
什么问题?

你好,我之前看到一个算法,仿真出来的重采样角域信号不对,不知道怎么处理。


%%------阶比跟踪算法-----
function = getCOT(x,t,fs,Dmax,pf,order,wu)
    %xtn为输出:等角度采样的信号序列
    %输入:x为等时间间隔采样信号序列,
    %t为时间,fs采样频率,Dmax为最大阶次,
    %pf为频率曲线序列,order:拟合频率曲线的阶次,wu:舍弃的点数
   
    t = t - min(t);%保证时间从0开始
   
    dw = pi/Dmax; %重采样角度间隔
    dt = 1/fs ;%采样时间间隔
   
    a = polyfit(t,pf,order); %3阶拟合:ft = a(1)*t.^3 + a(2)*t.^2 + a(3)*t+a(4);
    ft = polyval(a,t);%得到拟合后的频率曲线序列


    Na = length(a);
    for j = 1:Na
      a(j) = a(j)/(Na-j+1);
    end
   
    lenXtn = fix(2*pi*sum(ft*dt)/dw); %计算重采样后的数据长度 fix为取整函数
    lenXtn = lenXtn -wu;
   
    Tn = zeros(1,lenXtn); % 计算键相时标
    for ii = 1 : lenXtn      %   求解方程
      temp = ii/(2*Dmax);
      r = roots();
      for kk = 1: length(r)
            if isreal(r(kk))
                if r(kk) > 0 && r(kk) < 10000
                  Tn(ii) = r(kk);
                end
            end
      end
    end
   
    xtn = zeros(1,lenXtn);
      
   for ii = 1: length(x)-1
       for jj = 1:lenXtn
         if Tn(jj)>=t(ii) && Tn(jj)<=t(ii+1)
                xtn(jj) = x(ii) + (x(ii+1)-x(ii)/(t(ii+1)-t(ii)))*(Tn(jj)-t(ii));
         end
       end
   end

end
页: 1 [2]
查看完整版本: 求救cot 阶比重采样 问题