MATLAB数据输入和输出C语言转换

上传人:文*** 文档编号:62665782 上传时间:2022-03-15 格式:DOC 页数:8 大小:61.50KB
返回 下载 相关 举报
MATLAB数据输入和输出C语言转换_第1页
第1页 / 共8页
MATLAB数据输入和输出C语言转换_第2页
第2页 / 共8页
MATLAB数据输入和输出C语言转换_第3页
第3页 / 共8页
点击查看更多>>
资源描述
文档供参考,可复制、编制,期待您的好评与关注! 数据输入和输出一、 概述MATLAB可读和写的文件格式:文件格式文件内容扩展名读、写文件的函数MATLAB保存的MATLAB工作区.matload,save文本Text任意textscan,textread限定文本任意dlmread,dlmwrite逗号分隔的数值.csvcsvread,csvwriteXMLXML-格式文本t.xmlxmlread,xmlwriteAudioNeXT/SUN sound.auauread,auwriteMicrosoft WAVE sound.mavmavread,mavwriteMovieAudio/video.aviavireadScientific dataData in Common Data Format.cdf cdfread,cdfwriteFlexible Image Transport system data.fitsfitsreadData in Hierarchical Data Format.hdfhdfreadSpreadsheetExcel worksheet.xlsxlsread,xlswriteLotus 123 worksheet.wk1wk1read,wk1writeGraphicsTIFF/PNG/HDF/BMP/JPEG imageGIF/PCX/XWD/Cursor/Icon image.tiff .png .hdf .bmp .jpeg.gif .pcx .xwd .cur .icoimread,imwrite二、 使用输入向导(Import Wizard)从菜单File-Import Data打开Import Wizard;或者命令窗口输入函数uiimport。从剪贴板开始Import Wizard:Edit-Paste to workspace。三、 保存和加载MAT文件MAT文件是双精度、二进制、MATLAB格式的文件。输出到MAT文件:save filename var1 var2 str*;可以通过var1 var2 选择性保存变量;也可以使用通配符“*”。查看MAT文件中的变量:whos file 文件名。存放结构数组的某个字段:加上“-struct”选项。在已经存在的MAT文件上添加数据:-append选项。禁止压缩和Unicode字符编码文件,在save语句中加入“-v6”或者File-Preferences- General-MAT-Files-MAT-File save options-Ensure backward compatibility(-v6)。save语句默认为数据压缩。选择输出格式:“-ascii”、“-tabs”、“-double”“-v4”。从MAT文件输入数据:load函数。四、 输入文本数据各种输入函数的数据定界符:csvread仅逗号dlmread任何字符(可指定)fscanf任何字符load仅空格textread任何字符textscan任何字符详见:doc 函数名。textscan和textread性能比较:前者有更好的性能,特别是读大文件时;使用前者首先要打开文件,最后要关闭文件,可从文件任意位置读;前者只输出一个单元数组,不必给每个被读字段指定一个输出参数;前者有更多的数据转换选项和更多的用户设置选项。五、 输出文本数据ASCII数据输出函数的特点:csvwrite仅逗号dlmwrite任何字符(可指定)fprintf任何字符diary仅空格saveTab或空格六、 输入/输出标准图像文件imfinfo得到有关图像的信息imread输入图像数据imwrite输出图像数据imshow、imview显示图像七、 输入/输出音频和视频数据aufinfo返回描述声音文件信息aviinfo返回包含AVI文件信息的结构wavfinfo返回描述声音(WAV)文件信息mmfileinfo通用的多媒体信息函数auread从AU文件读入音频和视频数据aviread从AVI文件读数据wavread从Microsoft WAVE声音文件读movie播放录制的多帧影片audiorecorder建立录音器对象auwrite按AU格式输出数据wavwrite按WAV格式输出声音数据avifile建立avifile对象addframe获取图像序列getframe获取图片八、 输入/输出电子表数据xlsfinfo确定文件是否包含可读的Excelxlswrite将一个矩阵输出到Excel电子表格xlsread从一个Excel读入矩阵数据wk1finfo确定一个文件是否包含Lotus WK1wk1write矩阵输出到Lotus表格wk1read从Lotus 123读数据到MATLAB九、 低级文件输入/输出函数fopen打开文件fread读二进制数据fwrite写二进制数据fseek重新设置文件指针的位置ftell得到文件指针的位置ferror查询文件输入/输出时的错误fgetl从文件读一行文本,丢弃换行符fgets从文件读一行,保留换行符fscanf从ASCII文件读数据fclose关闭文件fprintf转换数据并将它们输出到文件或屏幕Matlab 转换为C语言 6.1版本的Matlab软件包中提供了C/C+的数学和图形库,通过其编译器支持可以将Matlab中编写的m文件转换成以C/C+代码的文件,而且可以将m文件生成dll库,甚至我们可以直接调用其中的库函数,生成并发布不必依赖Matlab的可执行文件。通过mcc编译器生成C/C+代码,进而可以在VC或者其它编译器生成可独立执行的应用程序。下面具体讨论如何利用Matlab编译器从m文件生成C/C+代码,并嵌入用户代码,生成运行时不需Matlab支持的应用程序。设matsum.m文件,内容如下:functionsum=matbs(a,b)%sumsum=a+b用mcc命令转换为C/C+代码,命令行参数如下生成C文件mcc-t-LCmatsum.m生成C+文件mcc-t-LCppmatsum.m生成动态链接库函数mcc-t-Wlib:sum-Tlink:libmatsum.m注意lib:后跟生成的库文件名不能和原m文件名相同(此处为sum),此处只能生成C语言方式的动态链接库。该编译命令共生成9个文件,其中sum.lib和sum.dll是可以在C/C+应用程序中调用的动态链接库文件。模极大值程序(似乎有错误)function x,I = localmax(x,rInit);%LOCALMAX Compute local maxima.% M. Misiti, Y. Misiti, G. Oppenheim, J.M. Poggi 05-Oct-96.% Last Revision: 25-May-2003.% Copyright 1995-2004 The MathWorks, Inc.% $Revision: 1.5.4.2 $ $Date: 2004/03/15 22:41:01 $r,c = size(x);if nargin=1 , rInit = r; end% Regularization of x (!?)%-regule = 1;if regule=1 wav = sym4; lev = 5; cfs,len = wavedec(x(rInit,lev,wav); x(rInit, = wrcoef(a,cfs,len,wav);endx = zeros(r,1) diff(abs(x),1,2);x(abs(x)sqrt(eps) = 0;x(x0) = 1;x = zeros(r,1) diff(x,1,2);I = find(x=-2);x(x-2) = 0;x(I) = 1;% Chain maxima - Eliminate false maxima.%-ideb = rInit ; step = -1; ifin = 1;max_down = find(x(ideb,);x(ideb,max_down) = max_down;if rInit2 , return; endfor jj = ideb:step:ifin max_curr = find(x(jj,); val_max = zeros(size(max_curr); for k = 1:length(max_down) nul,ind = min(abs(max_curr-max_down(k); val_max(ind) = max_down(k); end x(jj,max_curr) = val_max; max_down = max_curr(find(val_max);end EXAMPLE2wavelab802中有一个求模极大值的函数,他还牵涉到wavelab802802中的其他函数,大家可以去查。function ro = localmaxima(P,interval)% Find all the real roots of poly. P within the real interval a,ba = interval(1); b= interval(2);EPS = 10(-10);ro = roots(P);realpos = find(abs(imag(ro) a & rom);x y=size(wt);cc=abs(wt).*mycat);mycat=mycat.*0;for kk=1:x for jj=1:y-1 if (jj=1) if ( cc(kk,jj) cc(kk,jj+1) ) mycat(kk,jj)=1; end else if (cc(kk,jj)=cc(kk,jj-1)&(cc(kk,jj)=cc(kk,jj+1) & (cc(kk,jj)cc(kk,jj-1)|(cc(kk,jj)cc(kk,jj+1) ) mycat(kk,jj)=1; end end endend mould= mycat;return Example5function cat =cwtr(graypic,level);%水平方向变换图像,返回小波变换系数矩阵%level 小波变换尺度%l = imread(20040521134604015.jpg);%l = pic;%l=rgb2gray(l);%l=graypic;level=level;if (level=0) level=2;endmycat=l;mycat=0;cat=mycat;l=double(l)+1;cof=-1.3333333731,-1.3333333731,-1.3333333731; -0.3333333433,-0.9583333135,-1.2239583731; 0 ,-0.3333333433,-0.9583333135; 0 ,-0.0416666679,-0.6302083135; 0 ,0 ,-0.3333333433; 0 ,0 ,-0.1406250000; 0 ,0 ,-0.0416666679; 0 ,0 ,-0.0052083335; 0 ,0 ,0 ;x,y=size(l);wt=zeros(x,y);kk=1 ;temp1=0;if (level=1) appe=0,0;else if (level=2) appe=0,0,0,0; endappe=0,0,0,0,0,0,0,0;endlen=2level;for kk=1:x%s=l(kk, appe;s=l(kk,;for i=1:y mytemp=0; %* if (i-len)y)&(y0) stop=y-1; else stop=i+len -1 ; end for j=start:stop mytemp=mytemp+(s(j+1)-s(j)*cof(abs(i-j)+1,level) ; end wt(kk,i)=mytemp;endendcat=wt;%cat(x,=0;%cat(:,y)=0;return 8 / 8
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 各类标准


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!