导出CCS3.3数据及使用matlab处理的方法
2024-09-20 23:54:57
CCS3.3是一款DSP的集成开发环境(IDE)。在做DSP开发时,为验证算法。经常须要使用matlab进行算法验证,验证算法就须要数据。因此,一种交互的方法是:
- 使用DSP开发板连接CCS
- 用CCS3.3菜单中的“File->Data->Save..”功能导出DSP内存中的数据到PC的.dat文件里
- 使用Matlab读取.dat文件,进行数据处理
以下给出使用Matlab读取CCS导出的dat文件的方法:
% =========================================================================
% Read *dat file of CCS3.3
% xiahouzuoxin
% 2014.04.21
% =========================================================================
% clc;clear all;close all;
% 对话框选择*.dat文件
[fname,pname]=uigetfile(...
{'*.dat';'*.*'},'Input *.dat File');
fid = fopen(fullfile(pname,fname));
fseek(fid, 21,-1); % 去文件头, 21字节。如 1651 1 80000006 0 100
% 按指定格式读取解析
fm = 4;
switch (fm)
case 4 % 按4Byte格式读,如 0x 80000000
x = textscan(fid, '%2s %8s');
z(:,1) = hex2dec(x{2});
case 2 % 按2Byte格式读。如 0x 8000 0000
x = textscan(fid, '%2s %4s %4s');
z(:,1) = hex2dec(x{3});
z(:,2) = hex2dec(x{2});
case 1 % 按1Byte格式读。如 0x 80 00 00 00
x = textscan(fid, '%2s %2s %2s %2s %2s');
z(:,1) = hex2dec(x{5});
z(:,2) = hex2dec(x{4});
z(:,3) = hex2dec(x{3});
z(:,4) = hex2dec(x{2});
otherwise
z = [];
end
if ~isempty(z)
% 将数据处理代码放在这里
end
fclose(fid);
程序中默认DSP内存中数据的存储格式为整数类型,而对于浮点型DSP如TMS320C6713B,经常在内存中是float或double格式存储的,
这时。我们还须要一个转化为浮点数的操作。因此我写了一个转化为float类型的函数,
function y = integer2float(x, ishex)
% =========================================================================
% 有些数据y原本是float类型。在内存中是按float格式存储
% 而如今按整数将其从内存中读出变成了x
% 这个函数就是用于将按整数格式读出的x转变成y
% ishex~=0表示输入为十六进制格式
% 注:要完毕该函数,你必须了解IEEE浮点数的格式
%
% xiahouzuoxin
% 2014.04.21
% =========================================================================
if nargin == 2
if (ishex)
x = hex2dec(x);
end
end
[h w] = size(x);
y = zeros(h,w);
for i = 1:h
for j = 1:w
sign = bitget(x(i,j),32);
exponent = bitget(x(i,j),24:31) * 2.^(0:7).';
fraction = bitget(x(i,j),1:23) * 2.^(-23:-1).';
y(i,j) = (-1)^sign * (1+fraction) * 2^(exponent-127);
end
end
依据不同的输入情况(能够为十六进制的字符串表示或十进制数,但必须≤8Bytes),用法举个样例:
>> x='4565A012'
>> y=integer2float(x,1);
>> x = 23974881923;
>> y = integer2float(x)
后来发现,Matlab已经早有相应的方法了,
y = typecast(uint32(z),'single');
能够直接把z转化为解析为单精度浮点数。详细使用请參见
>> help typecast
最新文章
- WebService -- Java 实现之 CXF ( 使用:Spring+CXF+Tomcat发布webService)
- redis 学习 01(下载 学习资源)
- Nexus私服使Maven更加强大
- 2015年8月TIOBE编程语言排行榜
- Spring Framework Reference,Documentation,spring英文文档.pdf 官方文档
- LSI SAS 2308配置操作
- (原)Eclipse中将JNI生成的so打包成jar的步骤
- spark java 代码example
- HttpURLConnection发送请求
- String.format()的使用
- myeclipse10 blue版激活码
- python并发编程之多进程1-----------互斥锁与进程间的通信
- brew装snappy
- 51nod P1305 Pairwise Sum and Divide ——思路题
- 制作centos sshd 镜像
- 通过request获取网页资讯 通过BeautifulSoup剖析网页元素
- zookeeper原理及功能介绍(转)
- 【心得体会】我考完MOS我明白了…
- 3060 抓住那头奶牛 USACO
- import是page指令的一个属性。
热门文章
- 解决Arcgis10.2.2中dbf文件用EXCEL打开乱码问题
- Extjs gridPanel 动态指定表头
- 【docker】docker基础原理,核心技术简介
- 【postman】postman访问zuul路由网关,发生Could not get any response 的情况
- error: conflicting type qualifiers for &;#39;xxxxx&;#39;
- Java 8 中 HashMap 的性能提升
- CF 327B. Hungry Sequence
- 【转】一种新型的Web缓存欺骗攻击技术
- Command 命令模式 MD
- jQuery的一个关键函数