⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 transform.m

📁 绘制带通滤波器的图形 坐标的变换,低通到高通
💻 M
字号:
%transform.m   坐标的变换,低通到高通,带通,带阻

function  [out]=transform(pl1,f0,omegac,string)

sq=f0^2;
pb=[-fliplr(pl1),pl1(2:length(pl1))];
%omegac=2;%低通滤波器变换到低通滤波器时的扩张系数

if(string == 'lp2lp')
     plp1=omegac*pb;
     out=plp1;
     
 elseif(string=='lp2hp')
%低通到高通时坐标的对应关系!
  for i=1:length(pb)
    if i==length(pl1);  %在这里当低通滤波器的坐标为零时
        a=100;          %把高通的坐标作为一个比较大的数处理,如:100
        php1(i)=a;
    else
        a=1/pb(i);
        php1(i)=a;
    end
  end
  %php1=fliplr(php1);   %这里将从低通对应过来的坐标进行排序
  %php1=[php1(length(pl1)+1:length(pb)),php1(1:length(pl1))];  %坐标方向为:从大到小。考虑到绘图时的点点对应,可以注释掉!
  out=php1;  %对于输出都取正半部分的坐标
  
  
%低通到带通时的对应关系!
elseif(string=='lp2bp')
  for i=1:length(pb);
    a=roots([1,-pb(i),-sq]);
    if (i<length(pl1))
       pbp1(i)=a(2);
       pbp2(i)=a(1);
    else 
      pbp1(i)=a(1);
      pbp2(i)=a(2);
    end
   end
   out=pbp1; %对于输出都取正半部分的坐标


%低通到带阻时坐标的对应关系!
else
  for  i=1:length(pb)
     b=roots([pb(i),-1,-sq*pb(i)]);
     if(i<length(pl1))
        pbs1(i)=b(2);
        pbs2(i)=b(1);
    elseif (i==length(pl1))  % 当低通滤波器的坐标为零时,
        pbs1(i)=b(1);         %方程只有一个根
        pbs2(i)=b(1);
    else
        pbs1(i)=b(1);
        pbs2(i)=b(2);
    end
  end
  %pbs1=fliplr(pbs1);pbs2=fliplr(pbs2);
  %pbs1=[pbs1(length(pl1):length(pb)),pbs1(1:length(pl1)-1)];  %这里进行变换的原因是由于低通滤波器的负半部分对应于上带阻的下部分
  %pbs2=[pbs2(length(pl1)+1:length(pb)),pbs2(1:length(pl1))];   %而正半部分对应于上部分,坐标方向为:从大到小。考虑到绘图时的点点对应,可以注释掉!!
  out=fliplr(pbs1);     %对于输出都取正半部分的坐标
end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -