讨论MATLAB怎样提取10进制中的位的方法,因为做FFT时要用到截位,相去验证它,向同庆请教,

原来只是除以2的N次方,取模取余就行了,可恨我还想了一下午,也没有一个好办法。

接下来的问题是,对于负数我该怎么处理。

无论是有符号还是无符号数,如果做加减的话,都可以当做无符号数处理。但对于乘法运算则不然。

而蝶形运算是有乘法的,所以不能简单做为无符号数处理。具体实现过程如下:

%%=============================================================================
%%对第一级的输出进行截位处理
%%==============================================================================

%先转换成16进制,再换成10进制,把符号数据转换成无符号,其实不用这么麻烦的。直接用下面的程序即可。

%Stg1_OutData1_Real = Stg1_OutData1_Real+2^34*(Stg1_OutData1_Real < 0);
%Stg1_OutData2_Real = Stg1_OutData2_Real+2^34*(Stg1_OutData2_Real < 0); 
%Stg1_OutData1_Imag = Stg1_OutData1_Imag+2^34*(Stg1_OutData1_Imag < 0); 
%Stg1_OutData2_Imag = Stg1_OutData2_Imag+2^34*(Stg1_OutData2_Imag < 0);

Stg1_OutData1_Real = dec2hex(Stg1_OutData1_Real+2^34*(Stg1_OutData1_Real < 0),9);
Stg1_OutData2_Real = dec2hex(Stg1_OutData2_Real+2^34*(Stg1_OutData2_Real < 0),9);
Stg1_OutData1_Imag = dec2hex(Stg1_OutData1_Imag+2^34*(Stg1_OutData1_Imag < 0),9);
Stg1_OutData2_Imag = dec2hex(Stg1_OutData2_Imag+2^34*(Stg1_OutData2_Imag < 0),9);

% end;
Stg1_OutData1_Real = hex2dec(Stg1_OutData1_Real);
Stg1_OutData2_Real = hex2dec(Stg1_OutData2_Real);
Stg1_OutData1_Imag = hex2dec(Stg1_OutData1_Imag);
Stg1_OutData2_Imag = hex2dec(Stg1_OutData2_Imag);

%trancate process
%截去低16位
%提取中间16位
Stg1_OutData1_Real = floor(Stg1_OutData1_Real/2^16);
Stg1_OutData1_Real = mod(Stg1_OutData1_Real,2^16);
%截去低16位
%提取中间16位
Stg1_OutData2_Real = floor(Stg1_OutData2_Real/2^16);
Stg1_OutData2_Real = mod(Stg1_OutData2_Real,2^16);
%截去低16位
%提取中间16位
Stg1_OutData1_Imag = floor(Stg1_OutData1_Imag/2^16);
Stg1_OutData1_Imag = mod(Stg1_OutData1_Imag,2^16);
%截去低16位
%提取中间16位
Stg1_OutData2_Imag = floor(Stg1_OutData2_Imag/2^16);
Stg1_OutData2_Imag = mod(Stg1_OutData2_Imag,2^16);

for i= 1:32
if bitget(Stg1_OutData1_Real(i),16) == 1
Stg1_OutData1_Real(i) = Stg1_OutData1_Real(i) - 2^16;
else
Stg1_OutData1_Real(i) = Stg1_OutData1_Real(i);
end;

if bitget(Stg1_OutData2_Real(i),16) == 1
Stg1_OutData2_Real(i) = Stg1_OutData2_Real(i) - 2^16;
else
Stg1_OutData2_Real(i) = Stg1_OutData2_Real(i);
end;

if bitget(Stg1_OutData1_Imag(i),16) == 1
Stg1_OutData1_Imag(i) = Stg1_OutData1_Imag(i) - 2^16;
else
Stg1_OutData1_Imag(i) = Stg1_OutData1_Imag(i);
end;

if bitget(Stg1_OutData2_Imag(i),16) == 1
Stg1_OutData2_Imag(i) = Stg1_OutData2_Imag(i) - 2^16;
else
Stg1_OutData2_Imag(i) = Stg1_OutData2_Imag(i);
end;

end;

%%===================================================

%%======================================================

a=1.23456789

roundn(a,-4)

提取10进制中的某一位

bitget

MATLAB实现截位的问题的更多相关文章

  1. 【设计经验】5、Verilog对数据进行四舍五入(round)与饱和(saturation)截位

    一.软件平台与硬件平台 软件平台: 操作系统:Windows 8.1 64-bit 开发套件:Vivado2015.4.2  Matlab2016a 仿真工具:Vivado自带仿真器 二.引言 在利用 ...

  2. Verilog对数据进行四舍五入(round)与饱和(saturation)截位

    转自https://www.cnblogs.com/liujinggang/p/10549095.html 一.软件平台与硬件平台 软件平台: 操作系统:Windows 8.1 64-bit 开发套件 ...

  3. systemverilog中实现饱和截位和饱和截位的分析

    截位(rnd/prnd/floor):都是去掉低位数据的操作(去掉低位低精度的数据,或者说小数位,降低数据的精度) 饱和(sat/sym_sat):都是去掉高位数据的操作,(去掉无符号数高位的0,或者 ...

  4. FPGA定点小数计算中截位形式的探讨

    在FPGA设计过程中难免会碰到需要进行截位,那定点小数的计算过程中我们需要注意些什么呢? 首先,我们考虑如下计算式. sin cos 数据形式是 FIX_32_30 X Y Z 数据形式是 FIX_3 ...

  5. MATLAB:一个K×M的矩阵,第一列是1,其它都是0,从最后一行开始,每循环一次,最后一行的1往右边移一位,移动到末尾后溢出,重新回到最左边,同时上一行的1往右边移一位

    问题:一个K×M的矩阵,第一列是1,其它都是0,从最后一行开始,每循环一次,最后一行的1往右边移一位,移动到末尾后溢出,重新回到最左边,同时上一行的1往右边移一位.上一行溢出时,上上一行的1移动一位, ...

  6. MATLAB中FFT_HDL_Optimized模块定点(IEEE754单精度float格式)二进制与十进制转换实现

    早些时间段,做了Matlab中FFT_HDL_Optimzed模块FFT HDL代码仿真,并与Xilinx Vivado自带的xfft IP进行单精度浮点比较(后面随笔叙述).因为FFT_HDL_Op ...

  7. 再次完善了 WASPCN for Matlab

    前段时间有多个网友询问在64位Matlab中如何使用WASPCN(水和蒸汽性质计算软件)的方法,一直没能给出解决方案. 最近自己有个项目也需要在64位Matlab中如何使用WASPCN(水和蒸汽性质计 ...

  8. libSVM笔记之(一)在matlab环境下安装配置libSVM

    本文为原创作品,转载请注明出处 欢迎关注我的博客:http://blog.csdn.net/hit2015spring和http://www.cnblogs.com/xujianqing 台湾林智仁教 ...

  9. 使用ecilpse(Java)调用Matlab代码

    1 安装java环境: http://www.oracle.com/technetwork/java/javase/downloads/index.html 下载JDK最新版本并安装,CloudSim ...

随机推荐

  1. 6 python 继承与派生

    1.什么是继承? 继承指的是类与类之间的关系,是一种什么“是”什么的关系,继承的功能之一就是用来解决代码重用问题 继承是一种创建新类的方式,在python中,新建的类可以继承一个或多个父类 父类又可以 ...

  2. vue深入了解组件——动态组件&异步组件

    一.在动态组件上使用 keep-alive 我们之前曾经在一个多标签的界面中使用 is 特性来切换不同的组件: <component v-bind:is="currentTabComp ...

  3. DOM0和D0M2级事件

    1.DOM0级事件:on+事件类型 1.1.在html行内直接绑定, 1.2.在js中绑定 A.DOM0级事件和DOM0级事件相互之间会覆盖,比如以下代码执行后弹出jsDOM0级,js中绑定的事件 覆 ...

  4. 遍历python字典几种方法

    遍历python字典几种方法 from: http://ghostfromheaven.iteye.com/blog/1549441 aDict = {'key1':'value1', 'key2': ...

  5. os.popen与os.system区别

    os.system 调用系统命令,完成后退出,返回结果是命令执行状态,一般是0 os.popen 可以实现一个“管道”,从这个命令获取的值可以在python 中继续被使用 #该方法不但执行命令还返回执 ...

  6. redis-trib.rb报错:/usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require': cannot load such file -- redis (LoadError)

    报错如下: /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require': cannot load such file -- redis ...

  7. DirectShow 制作在Unity3D中可以设置进度的视频播放插件

    如果想在Unity3D中去播放视频文件,那么最方便的方法就是使用它自带的MovieTexture. 可以实现简单的视频播放功能. Play Pause Stop. 有也只有这三个功能,  如果你想要一 ...

  8. 基元线程同步构造 AutoResetEvent和ManualResetEvent 线程同步

    在.Net多线程编程中,AutoResetEvent和ManualResetEvent这两个类经常用到, 他们的用法很类似,但也有区别.ManualResetEvent和AutoResetEvent都 ...

  9. break、continue、pass介绍

    break.continue.pass介绍 break:跳出当前循环 continue:跳出本次循环,进行下一次循环 pass:什么也不做,占位.

  10. 如何获取某个网站的favicon.ico

    http://moco.imooc.com/player/report.html 今天看到这个网站上,左侧的小图片挺好看的,想弄下来,检查源码,也没有看到 <head> <meta  ...