SophiaHu的个人空间 https://blog.eetop.cn/sophiahu [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

matlab入门

已有 971 次阅读| 2007-4-18 21:35 |个人分类:专业

天气: 晴朗
心情: 高兴

 

  上个星期,要对实现数字功放的算法进行验证,因此开始学习matlab.

  现将所遇到的问题及我所用的解决方法列举出来,希望和大家一起学习,也寻求更好的方法.

  1.已知18位用补码形式表示的一序列二进制数,在matlab中如何显示出其波形?

%18bit
clear all;
A=textread('1.txt','%s');
B=bin2dec(A);
C=B;
a=size(B);
b=a(1);
for k=1:b
    if B(k)>=2^17
        C(k)=B(k)-2^18;
    end
end
stem(C);

  2.已知一序列二进制数(假设是1bit),希望通过1个1bitD/A转换,模拟低通滤波器,反原为正弦波

clear all;
D=textread('1.txt','%s');
x=bin2dec(D);
b=size(x);
N=b(1);
n=1:N;   
 m=n-1; 
axis([1 N -1 1]);
stem(m,x);
 xlabel('时间序号');ylabel('振幅');
 title('输入数字信号');
 pause
%产生量化输出
 y=zeros(1,N+1);
 a=zeros(1,N+1);
 e=0;
for k=2:N+1
      a(k)=x(k-1)-e;
      if a(k)>=0,
      y(k)=1;
      else
         y(k)=-1;
      end
   e=y(k)-a(k);
 end
 yn=y(2:N+1);
 axis([0 N -1.2 1.2]);
 stem(m,yn);  

%画出量化输出
xlabel('时间');ylabel('振幅');
 title('量化器的数字输出');
pause
Y=fft(yn);
 H=[1 1 0 zeros(1,N-5) 0 1]; %低通滤波器
 YF=Y.*H; %在离散傅立叶变换域的滤波
 out=ifft(YF);
 plot(m,out);
xlabel('时间');ylabel('振幅');
title('低通滤波器后的模拟输出');

%产生量化输出那部分不是很明白

%还有H=[1 1 0 zeros(1,N-5) 0 1]; 中为什么要N列?通过傅立叶变换得到的Y是个怎么样的矩阵?

希望大虾指教!!

  


点赞

全部作者的其他最新日志

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 1

    粉丝
  • 0

    好友
  • 0

    获赞
  • 6

    评论
  • 92

    访问数
关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-12-22 18:09 , Processed in 0.034914 second(s), 17 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部