讨论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. ABAP-关于隐式与显式的DB Commit

    转载:https://www.cnblogs.com/liaojunbo/archive/2011/07/11/2103491.html 1.显式的DB Commit 显式的DB Commit并没有对 ...

  2. ubuntu 命令安装软件

    终端安装(命令安装).第一,找到终端或者按住Ctrl+Alt+t 打开终端;第二输入命令,命令如下:cd /xxx/xxx/,(xxx代表软件包路径,一直到你放置软件包的文件夹),之后输入命令:sud ...

  3. Python Spider 抓取猫眼电影TOP100

    """ 抓取猫眼电影TOP100 """ import re import time import requests from bs4 im ...

  4. ServiceLoader实现原理

    在java中根据一个子类获取其父类或接口信息非常方便,但是根据一个接口获取该接口的所有实现类却没那么容易. 有一种比较笨的办法就是扫描classpath所有的class与jar包中的class,然后用 ...

  5. C++17尝鲜:在 if 和 switch 语句中进行初始化

    初始化语句 在C++17中,类似于 for 语句,在 if 和 switch 语句的判断条件之前也能加上初始化语句,语法形式如下: if (初始化语句; 条件) 语句 else 语句 switch ( ...

  6. Docker之My sql 之旅

    要用到mysql 数据库,本来想在本机装,后来想想还是有点污染环境,既然有docker为什么不用呢? 于是开启了采坑之旅,与其说采坑,倒不如说看文档不仔细看. docker pull mysql:5. ...

  7. js中的Event对象

    event代表事件的状态,例如触发event对象的元素,鼠标的位置及状态,按下的键等等 event对象只在事件发生的过程中才有效. <!DOCTYPE html><html lang ...

  8. struts2 参数注入 方法拦截器

    web.xml: <?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi=" ...

  9. Bioconductor应用领域之基因芯片

    引用自https://mp.weixin.qq.com/s?__biz=MzU4NjU4ODQ2MQ==&mid=2247484662&idx=1&sn=194668553f9 ...

  10. 查看webdriver针对浏览器的一些函数

    在用webdriver对浏览器进行操作时,很多操作并不是那么好找,后来在朋友的推荐下可以用下面的方法来寻找针对浏览器的一些操作,函数或属性等,这样方便我们可以查找一些方法去完成我们要的操作. 下面是查 ...