matlab的8年应用总结,针对工程学科比较深入的高级应用(9)

2020-06-18 19:11

% data Y. The filter is a \ % implementation of the standard difference equation: % % a(1)*y(n) = b(1)*x(n) + b(2)*x(n-1) + ... + b(nb+1)*x(n-nb) % - a(2)*y(n-1) - ... - a(na+1)*y(n-na) % % If a(1) is not equal to 1, FILTER normalizes the filter % coefficients by a(1). % 设定成单片机上用的那种,Q B = [Q] A = [1 -(1-Q)] Y = FILTER(B,A,X)% 这样就和我自己写的那个f_filter1order(X,Q)一样了。测试过。 B = [1 1 1 1] A = [sum(B) ] 就是把最近的4个进行平均。

17.3 重采样

% INTERP Resample data at a higher rate using lowpass interpolation. % Y = INTERP(X,R) resamples the sequence in vector X at R times % the original sample rate. The resulting resampled vector Y is % R times longer, LENGTH(Y) = R*LENGTH(X). k0 = [0 2 3 4]; interp(k0,R); % 这个R只能为整数,所以只能添加点,不能删除点。 18 与单片机程序转换时常用指令

18.1 把C语言函数转换成m函数

1、 把相关内容放到一个m文件中,建立函数,包括宏定义; 2、 把’//’替换成’%’; 3、 把’#define’替换为’’;

4、 把宏定义做成变量赋值,都转换成10进制;0x12在 m文件中写成hex2dec('20');

5、 把全局变量在m文件中定义类似的global;C中是数组,m文件中也定义成数组,赋初值; 6、 m文件的子函数中声明全局变量; 7、 数组下标‘[’和‘]’改成‘(’和‘+1)’ 8、 位操作:把‘&’,‘|’,‘>>’,‘<<’,‘’等替换格式;如c=A&B?c = bitand(uint8( A ),B); 9、 ‘if’操作中,‘else if’替换为‘elseif’,并对每个if添加end; 10、 Switch操作:每个case结尾的break’删掉;

36

11、 12、 13、 14、 Bitand Bitor Bitxor Bitcmp ‘{’,‘}’,‘:’全部替换为空; ‘+=’,‘-=’,‘*=’,‘/=’,‘++’,‘--’替换格式; Smart Indent; 测试;

单片机中指令 & | ^ ~ <<, >> && || == != (u8) 按位与 按位或 按位异或 按位取反 N大于0,左移 逻辑与 逻辑或 逻辑等于 逻辑不等于 含义 Matlab中指令 Bitshift(a,N) & | == ~= uint8(这个负数都处理为0了) rem(x,y) mod(x,y)

两者的区别是余数的符号,rem与x相同,而mod与y相同 %商

s=floor(13/3) %余数

y=rem(13,3)

【有符号的十六进制数转换成十进制数】

function decval=hex2decWithSign(hexval, length)

decval = hex2dec(hexval); sign = bitget(decval, 4*length); negative_numbers = (sign == 1);

decval(negative_numbers) = decval(negative_numbers) - bitshift(1, 4*length);

用法:

>> hex2decWithSign({'FFFF', '0000'}, 4)

ans =

-1 0

>> hex2decWithSign('FFFF', 5)

37

【matlab】

___Data Type_______ Range of Values_______ Conversion Function Signed 8-bit integer____ -2e7 to 2e7-1_____________int8 Signed 16-bit integer__ -2e15 to 2e15-1____________int16 Signed 32-bit integer__ -2e31 to 2e31-1____________int32 Signed 64-bit integer___-2e63 to 2e63-1____________int64 Unsigned 8-bit integer______0 to 2e8-1____________uint8 Unsigned 16-bit integer_____0 to 2e16-1___________uint16 Unsigned 32-bit integer_____0 to 2e32-1___________uint32 Unsigned 64-bit integer_____0 to 2e64-1___________uint64

18.1.1 matlab读16进制文件-大小端

matlab的大小端:big endian / little endian

matlab在读取十六进制文件时,也会有大小端的问题。 例如要读取十六进制数据文件:01 CB 07 4D

[filename, pathname, filterindex] = uigetfile( ... {'*.txt','TXT (*.txt)'; ...

'*.dat','DAT-files (*.dat)'; ... '*.*', 'All Files (*.*)'}, ... 'Pick a file', 'Untitled.dat');

fid=fopen([pathname filename],'rb', 'b'); % ‘b’--big endian if (fid < 0)

display(sprintf('Could not open %s\\n', filename)); return; end

data = fread(fid,inf, 'bit16'); fclose(fid);

读出来的结果是: data(0) = 0x01CB data(1) = 0x074D

38

而如果用小端模式(little-endian),读出来的结果会是: data(0) = 0xCB01 data(1) = 0x4D07

fopen的默认模式是little-endian。

19 基本逻辑表达

Switch 19.1 半透明色块

可用指令pcolor(x,y,c)来画色块,然后用alpha(a)来设置透明度,a为0-1的值。 常用的是画个四边形,此时x,y,c均为2*2的矩阵,x表示四个顶点的x值,y表示四个顶点的y值,对应关系为: X=[x1 x2;x3 x4]; Y=[y1 y2;y3 y4]; 四个顶点为(x1,y1), (x2,y2), (x3,y3), (x4,y4) 可以认为分别对应四边形的右上角,右下角,左上角,左下角。 C表示颜色,几种常用的颜色为: C=[0.4 0.2;0.7 0.8] %浅蓝 C=[1 1;1 1] %浅绿 C=[0.2 -1;1 -1] %黄 C=[1/3 2/3;-3 5/6] %红 C=[1/3 2/3;5/12 5/6] %深蓝 C=[1/3 2/3;-7 5/6] %深红 C=[2/3 1/3;5/6 5/12] %橙黄 C=[5/6 5/12; 1 0.5] %橘红 自己尝试的几种颜色,非标准写法。 % 程序示例 figure(4) X=[-0.7217 -0.8333;-0.8660 -1.0000]; Y=[0.4167 0.0000;0.5000 0.1000]; C=[0.4 0.2;0.7 0.8]; pcolor(X,Y,C) grid alpha(0.5) 39

19.2 Spapi, B样条插值, 2011-3-26发现居然x值不能反复,而且超出边

界之后归0了.

Spapi:B样条插值 sp = spapi({3,4},{x,y},z); {3,4}是代表x的阶次和y的阶次 fnval() spapi(k,x,y); % 这个是k阶B样条插值 K是阶次,5表示5阶4次。4次样条曲线,如果车的轨迹是这条曲线的话,对应加速度连续。 X需要单调。

Spline:三次样条插值,YY=spline(x0,y0,XX)计算等价于sp_temp=spapi(4,x0,y0); Spline(x0,y0,XX). 如果x0在同一x值处有两个y值,则从这两个点中间走过,并不过实际的点。 Csapi:三次样条插值,基函数是三次多项式 S=csapi(x,y) 其中x=[x1,x2,?.,xn], y=[y1,y2,?,yn]为样本点。 S返回样条函数对象的插值结果,包括子区间点、各区间点三次多项式系数等。 - 可用 fnplt()绘制出插值结果,其调用格式: fnplt(S) - 对给定的向量xp, 可用fnval()函数计算, 其调用格式: yp=fnval(S,xp) 其中得出的yp是xp上各点的插值结果。

Spaps:三次B样条拟合

Matlab样条工具箱中的函数提供了样条的建立,操作,绘制等功能; 一. 样条函数的建立

第一步是建立一个样条函数,曲线或者曲面。这里的样条函数,根据前缀,分为4类: cs* 三次样条

pp* 分段多项式样条,系数为t^n的系数 sp* B样条, 系数为基函数B_n^i(t)的系数

rp* 有理B样条Matlab样条工具箱中的函数提供了样条的建立,操作,绘制等功能; 一. 样条函数的建立

第一步是建立一个样条函数,曲线或者曲面。这里的样条函数,根据前缀,分为4类: cs* 三次样条

pp* 分段多项式样条,系数为t^n的系数

40


matlab的8年应用总结,针对工程学科比较深入的高级应用(9).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:深商控股集团股份有限公司是由深圳市总商会倡导、深圳市大型民营

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: