如何把一个信号下采样,然后转换成二进制
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 编辑 ] if语句是否应改为
if d(i)<0 改了之后
假如
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;还有其他方式实现吗? 当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; 原帖由 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
下采样和上采样有什么区别?怎样区分呢?
下采样是不是抽取decimate( )函数?上采样是插值interp( )函数?
页:
[1]