HolySaint 发表于 2008-3-27 10:05

如何把一个信号下采样,然后转换成二进制

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 编辑 ]

songzy41 发表于 2008-3-27 11:24

if语句是否应改为
if d(i)<0

HolySaint 发表于 2008-3-27 12:19

改了之后

假如
d=的转秩

我想要的输出是
b=dec2bin(d(i),3);
b=[001
   010
   011
   100]
生成一个n行3列的矩阵
代码改成了
还是不对t=0:1023;
d=(fix(sin(2*pi*t/256)*10^5))';
for i=1:1024
    if d(i)<0
      b=dec2bin(2^10+d(i),10);
    else
      b=dec2bin(d(i),10);
    end;
end;
bout=b/100000;还有其他方式实现吗?

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=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;

HolySaint 发表于 2008-3-28 13:37

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

忽略位数了
:@(
多谢了:handshake

hnyanhua 发表于 2008-6-9 15:29

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

下采样是不是抽取decimate( )函数?
上采样是插值interp( )函数?
页: [1]
查看完整版本: 如何把一个信号下采样,然后转换成二进制