MATALB代码备份

vim   :set nonu    不显示行号

1.DAC计算INL DNL

%% 2022年5月17日由Baymax创建,
% 0424.csv:仿真数据为全0至全1的的斜坡数据。
% .csv文件提前做处理,去掉首行数据和第一列的时间数据,只保留台阶值

clear
clc
close all

filename = '0424.csv';     
DATA = csvread(filename);

n=length(DATA);       %读取列长 例如 8位:256  10位:1024

for i=2:n;
D_LSB(i-1)=DATA(i)-DATA(i-1);   %实际台阶
end

LSB=(DATA(n)-DATA(1))/(n-1);  %实际LSB

for i=1:n-1;
D_DNL(i)=(D_LSB(i)-LSB)/LSB;   %DNL
end

D_INL=cumsum(D_DNL);           %INL
%% 作图
figure
plot(D_LSB) 
title('LSB');

figure 
subplot(2,1,1);
plot(D_DNL) 
title('DNL'); axis([1 n -1 1]) ;
DNL=sprintf('MAX#DNL=%.2g, MIN#DNL=%.2g', max(D_DNL), min(D_DNL))
text(n/2,0.8,DNL);

subplot(2,1,2);
plot(D_INL) 
title('INL');axis([1 n -1 1]) ;
INL=sprintf('MAX#INL=%.2g, MIN#INL=%.2g', max(D_INL), min(D_INL))
text(n/2,0.8,INL);

2.解方程组

clear                                                                                                                                                                                                                               
clc

syms   m   k  %%定义变量

A=solve((m+1-2*k*sqrt(m))/(m*(1-k*sqrt(m))+k*sqrt(m)*(m-k*sqrt(m)))-9,k)  %%用m表达k

pretty(collect(A))     %% 化简公式显示
  

double(solve(0.8==(2*sqrt(2*(9*m-1))+1)/(9*sqrt(m))))  %%计算函数=0.8时,m的值
 
k=(2*sqrt(2*(9*m-1))+1)/(9*sqrt(m))      %% m=0.16时的K值
double(subs(k,0.1604))

3.十转十六进制,拼接

clc;
clear;

%% x400
ci=input('ci=');     %输入数据
co=input('co=');
rin=input('rin=');

A1=dec2bin(ci,6);    %十转二进制,并且固定为6bits
A2=dec2bin(co,6);
A3=dec2bin(rin,7);

A=[A3,A2,A1];        %拼接二进制数值

AA=bin2dec(A);       %二转十
x400=dec2hex(AA)     %十转十六                                                                                                                                                                                                                  

%% x404

st=input('1st=');
nd=input('2nd=');
vcmfb=input('vcmfb=');
mc=input('mc=');
cap1=input('rc_cap1=');
res1=input('rc_res1=');
cap2=input('rc_cap2=');
res2=input('rc_res2=');

B1=dec2bin(st,3);
B2=dec2bin(nd,3);
B3=dec2bin(vcmfb,3);
B4=dec2bin(mc,4);
B5=dec2bin(cap1,5);
B6=dec2bin(res1,4);
B7=dec2bin(cap2,5);
B8=dec2bin(res2,4);

B=[B8,B7,B6,B5,B4,B3,B2,B1];

BB=bin2dec(B);
x404=dec2hex(BB)

4.十六转十进制,拆分

clc;                                                                                                                                                                                                                                    
clear;

%% x400   7fa1f

x400=input('x400=');   %输入数据

AA=hex2dec(x400);      %十六转十
A=dec2bin(AA,19);      %十转二,固定为19bits

ci=bin2dec(A(14:19))   %拆分后6位,二转十
co=bin2dec(A(8:13))
rin=bin2dec(A(1:7))

%% x404

% x404=input('x404=');

BB=hex2dec(x404);
B=dec2bin(BB,31);
st=bin2dec(B(29:31))
nd=bin2dec(B(26:28))
vcmb=bin2dec(B(23:25))
mc=bin2dec(B(19:22))
cap1=bin2dec(B(14:18))
res1=bin2dec(B(10:13))
cap2=bin2dec(B(5:9))
res2=bin2dec(B(1:4))

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值