数据输入和输出
一、 概述
MATLAB可读和写的文件格式:
printf输出格式默认
文件格式
文件内容
扩展名
读、写文件的函数
MATLAB
保存的MATLAB工作区
.mat
load,save
文本
Text
任意
textscan,textread
限定文本
任意
dlmread,dlmwrite
逗号分隔的数值
.csv
csvread,csvwrite
XML
XML-格式文本t
.xml
xmlread,xmlwrite
Audio
NeXT/SUN sound
.au
auread,auwrite
Microsoft WAVE sound
.mav
mavread,mavwrite
Movie
Audio/video
.avi
aviread
Scientific
data
Data in Common Data Format
.cdf
cdfread,cdfwrite
Flexible Image Transport system data
.fits
fitsread
Data in Hierarchical Data Format
.hdf
hdfread
Spreadsheet
Excel worksheet
.xls
xlsread,xlswrite
Lotus 123 worksheet
.wk1
wk1read,wk1write
Graphics
TIFF/PNG/HDF/BMP/JPEG image
GIF/PCX/XWD/Cursor/Icon image
.tiff .png .hdf .bmp .jpeg
.gif .pcx .xwd .cur .ico
imread,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-> Genera
l->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
仅空格
save
Tab或空格
六、 输入/输出标准图像文件
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
确定文件是否包含可读的Excel
xlswrite
将一个矩阵输出到Excel电子表格
xlsread
从一个Excel读入矩阵数据
wk1finfo
确定一个文件是否包含Lotus WK1
wk1write
矩阵输出到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文件,内容如下:
function sum = matbs( a, b )
% sum
sum = a + b
用mcc命令转换为C/C++代码,命令行参数如下
生成C文件
      mcc -t -L C matsum.m
生成C++文件
      mcc -t -L Cpp matsum.m
生成动态链接库函数
      mcc -t -W lib:sum -T link:lib matsum.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);
end
x = [zeros(r,1) diff(abs(x),1,2)];
x(abs(x)<sqrt(eps)) = 0;
x(x<0) = -1;
x(x>0) = 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 rInit<2 , return; end

for 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
EXAMPLE2
wavelab802中有一个求模极大值的函数,他还牵涉到wavelab802802中的其他函数,大家可以去查。
function ro = localmaxima(P,interval)
% Find all the real roots of poly. P within the real interval [a,b]

a = interval(1); b= interval(2);
EPS = 10^(-10);
ro = roots(P);
realpos = find(abs(imag(ro)) < EPS);
ro = real(ro(realpos));
pos = find(ro>a & ro<b);
ro = ro(pos);
ro = sort(ro);
   
   

% Part of WaveLab Version 802
% Built Sunday, October 3, 1999 8:52:27 AM
% This is Copyrighted Material
% For Copying permissions see COPYING.m
% Comments? e-mail wavelab@stat.stanford.edu
%
localmax()只是用来求局部极大值,
Example3
function [mould]=extre_mould(s,maxvalue);
%%%%%%%%%%%%%%%%%求莫极大值
%%maxvalue阀值
%%%、s 小波变换矩阵
wt=s;
m=maxvalue;

mycat=(abs(wt)>m);

[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

    end
end
       
mould= mycat;
return

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。