首先,谈谈CCS导出的数据,其保存的文件的扩展名都为.dat型,但是,里面的数据可以分为多种类型,比如整形,hex型,和浮点型,这三个比较常用。其中,当你保存为hex型时,注意,其格式为补码形式,即正数为源码,负数为取反加一,符号位不变。
首先,导出的数据,如何导入matlab中呢?方法有三:
一,用函数textread,不过这个函数matlab提示,要去除了。
二,用textscan,个人感觉还是不太方便。
三,用importdata函数,个人感觉,很好用。如下:
I = importdata('error.dat');
function val=hex2dec_sign(val_in,length) a=hex2dec(val_in); sign=bitget(a,4*length);%得到最高位的数值,即符号位 if (sign==1) a=bitshift(a,-1)-1;%bitshift函数,第二个变量为正,*2,为负,/2 b=2^(4*length-1)-1-a; val=-b; else val=a; end整体主函数为:
clc;clear all;close all; I = importdata('error_HEX.dat'); [M,N] = size(I'); B=cell2mat(I); %计算 aa=B(:,3:10); bb=zeros(N,1); for i=1:N bb(i,1)=hex2dec_sign(aa(i,:),8); end % bb(500,1)=5000000; bb(1000,1)=10000000; % bb(100,1)=1000000; cc=zeros(N/2,1); for i=1:2:N-1 cc((i+1)/2,1)=complex(bb(i,1),bb(i+1,1)); end d=20*log10(abs(fft(cc))); c=d(1:N/4,1); e=d((N/4+1):N/2,1); plot([e;c]);