声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2506|回复: 5

[综合讨论] 如何把一个信号下采样,然后转换成二进制

[复制链接]
发表于 2008-3-27 10:05 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
t=0:1023;
d=fix(sin(2*pi*t/256)*10^5);
for i=1:1024
    if d<0
        b=dec2bin(2^10+d(i),10);
    else
        b=dec2bin(d(i),10);
    end;
end;
bout=b/100000;


因为是小数所以去了部分整
但是结果却不对
那个判断正负的有问题吗?
还是别的地方?

[ 本帖最后由 eight 于 2008-3-27 15:46 编辑 ]
回复
分享到:

使用道具 举报

发表于 2008-3-27 11:24 | 显示全部楼层
if语句是否应改为
if d(i)<0
 楼主| 发表于 2008-3-27 12:19 | 显示全部楼层
改了之后

假如
d=[1 2 3 4]的转秩

我想要的输出是
b=dec2bin(d(i),3);
b=[001
     010
     011
     100]
生成一个n行3列的矩阵
代码改成了
还是不对
  1. t=0:1023;
  2. d=(fix(sin(2*pi*t/256)*10^5))';
  3. for i=1:1024
  4.     if d(i)<0
  5.         b=dec2bin(2^10+d(i),10);
  6.     else
  7.         b=dec2bin(d(i),10);
  8.     end;
  9. end;
  10. bout=b/100000;
复制代码
还有其他方式实现吗?
发表于 2008-3-28 10:49 | 显示全部楼层
当d=(fix(sin(2*pi*t/256)*10^5))';时,d(i)最大可达100000,这时怎么能用2进制的10位数表示呢?所以改了一下,乘以10^3(最大为1000),并用2进制的11位数表示(最高位实际为符号位),以补码形式:
t=0:1023;
d=fix(sin(2*pi*t/256)*10^3);
for i=1:1024
    if d(i)<0
        b=dec2bin(2^11+d(i),11);
    else
        b=dec2bin(d(i),11);
    end;
fprintf('%4d  %10d   ',i,d(i));
disp(b);
end;

评分

1

查看全部评分

 楼主| 发表于 2008-3-28 13:37 | 显示全部楼层
原帖由 songzy41 于 2008-3-28 10:49 发表
当d=(fix(sin(2*pi*t/256)*10^5))';时,d(i)最大可达100000,这时怎么能用2进制的10位数表示呢?所以改了一下,乘以10^3(最大为1000),并用2进制的11位数表示(最高位实际为符号位),以补码形式:
t=0:1023;
d= ...


忽略位数了
:@(
多谢了:handshake
发表于 2008-6-9 15:29 | 显示全部楼层

下采样和上采样有什么区别?怎样区分呢?

下采样是不是抽取decimate( )函数?
上采样是插值interp( )函数?
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-6-9 02:36 , Processed in 0.060785 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表