matlab常用代码
来源:互联网 发布:知而行天下 编辑:程序博客网 时间:2024/06/03 16:27
----来自我的QQ博客-----
http://user.qzone.qq.com/459125872/blog/1388641939
判断某个文件or目录是否存在
exist('rule_features.mat','file')
如果文件rule_features.mat不存在返回,否则返回其它整数(文件为2)
exist('data','dir')
如果目录存在返回一个自然数(7),如果不存在,返回0.
if ~exist('data')
mkdir('data')
end
exist('rule_features.mat','file')
如果文件rule_features.mat不存在返回,否则返回其它整数(文件为2)
exist('data','dir')
如果目录存在返回一个自然数(7),如果不存在,返回0.
if ~exist('data')
mkdir('data')
end
问题matlab2012和vs2013,No supported SDK or compiler was found on this computer.
原因matlab版本比vs旧,不支持vs2013编译器,吧matlab换成2014版的就好了
问题Test checkout of feature 'Compiler' failed.
原因是matlab未完全破解,2014a的破解办法:
http://pan.baidu.com/s/1qWFbOjq,提取码84rg ,
下载后解压,把“..\Matlab64\bin\win64”目录下的compiler.dll,mcc.exe,libmwservices.dll 三个文件复制到matlab安装目录对应位置替换原文件即可!(如果软件是32位,则对应目录为“..\Matlab32\bin\win32”)
http://pan.baidu.com/s/1qWFbOjq,提取码84rg ,
下载后解压,把“..\Matlab64\bin\win64”目录下的compiler.dll,mcc.exe,libmwservices.dll 三个文件复制到matlab安装目录对应位置替换原文件即可!(如果软件是32位,则对应目录为“..\Matlab32\bin\win32”)
转载出处:http://blog.csdn.net/smilebluesky/article/details/42987985 ;
连mysql库
检查数据类型
字符转换大小写
randperm(n)产生1到n的整数的无重复的随机排列,利用它就可以得到无重复的随机数。
a = randperm(5) ;%通常每次运行结果不一样
a = [2,1,5,3,4];
创建目录:
内容清除:clear;
清空命令行:clc;
查找图片文件dir (fullfile(,)):
matlab链接mysql:
http://blog.sina.com.cn/s/blog_6c843f980102vin6.html
matlab 代码:
conn =database('lbs_data_process','root','root','com.mysql.jdbc.Driver','jdbc:mysql://127.0.0.1:3306/lbs_data_process');
ping(conn);
cursorA = exec(conn,'select * from rule_check_all');
cursorA = fetch(cursorA);
rules_road = cursorA.Data;
>> a = [1 2 3 4];
>> class(a)
ans =
double
>> size(a)
ans =
1 4
>> str = 'helLO,小强'
str =
helLO,小强
>> str2 = upper(str)
str2 =
HELLO,小强
>> str3 = lower(str)
str3 =
hello,小强
matlab 元包,cell
res(1) = {1x1 cell}
res{1} = '连通性'
res(1)取元包数组的第一个元素,还是cell形式。
res{1}取元包数组的第一个元素的内容,在这里是字符串。
显示内容,disp()
disp('hello show');
dispose(res{1});
matlab写入txt文件
dataM = xlsread('test.xls',2,'B2:C17');
读入test.xls 文件的第2个工作簿 的B2:C17区域的数值内容,并用dataM矩阵接受该内容。
参考:http://blog.csdn.net/ximenchuixuezijin/article/details/5650399
写入xls,rules_road为一个二维元包数组
xlswrite('myrule.xls',rules_road);
res(1) = {1x1 cell}
res{1} = '连通性'
res(1)取元包数组的第一个元素,还是cell形式。
res{1}取元包数组的第一个元素的内容,在这里是字符串。
显示内容,disp()
disp('hello show');
dispose(res{1});
matlab写入txt文件
b = 10;
fp = fopen('D:\ztq.txt','wt');
fprintf(fp, 'b = %d\n', b);
读、写xls表格内容dataM = xlsread('test.xls',2,'B2:C17');
读入test.xls 文件的第2个工作簿 的B2:C17区域的数值内容,并用dataM矩阵接受该内容。
参考:http://blog.csdn.net/ximenchuixuezijin/article/details/5650399
写入xls,rules_road为一个二维元包数组
xlswrite('myrule.xls',rules_road);
meshgrid mesh
bitxor
C=bitxor(A,B);
得到两个逻辑变量的异或
pVoicedPefac = [0.4, 0.5, 0.6, 0.7];
tPitch = [50, 0, 100, 0 ];
bVoicedPefac = pVoicedPefac>=0.5;
B = uint13([1 1 1 0 0 0 0 1 0 0 0 1 0]);
TT = bitxor(A, B)
TT =
1 0 1 0 1 1 0 1 1 0 1 1 1
mvnrndrepmat
B = repmat(A,m,n)
x = -3:3;%7
y = -2:3;%6
[X,Y] = meshgrid(x,y);%X 和Y都是6列7行的网格,x拷贝6行成X,y转置成列并列拷贝7列成Y
x=-3 -2 -1 0 1 2 3
Z = X.^2 + Y.^2;
mesh(X,Y,Z); %绘制X或者Y size的网格,网格上每个节点计算Z值并绘制出来。x=-3 -2 -1 0 1 2 3
X=
-3 -2 -1 0 1 2 3
-3 -2 -1 0 1 2 3
-3 -2 -1 0 1 2 3
-3 -2 -1 0 1 2 3
-3 -2 -1 0 1 2 3
-3 -2 -1 0 1 2 3
y = -2 -1 0 1 2 3
Y
Y
-2 -2 -2 -2 -2 -2 -2
-1 -1 -1 -1 -1 -1 -1
0 0 0 0 0 0 0
1 1 1 1 1 1 1
2 2 2 2 2 2 2
3 3 3 3 3 3 3
C=bitxor(A,B);
得到两个逻辑变量的异或
pVoicedPefac = [0.4, 0.5, 0.6, 0.7];
tPitch = [50, 0, 100, 0 ];
bVoicedPefac = pVoicedPefac>=0.5;
bVoicedTrue = tPitch>1;
errFrame = bitxor(bVoicedPefac,bVoicedTrue)
errFrame = bitxor(bVoicedPefac,bVoicedTrue)
senNumErrVoiced = sum(Frame);
又如
A = uint13([0 1 0 0 1 1 0 0 1 0 1 0 1]);又如
B = uint13([1 1 1 0 0 0 0 1 0 0 0 1 0]);
TT = bitxor(A, B)
TT =
1 0 1 0 1 1 0 1 1 0 1 1 1
mvnrnd
data=mvnrnd(mu1,sigma1,300);
生成300个数据,数据是符合均值为mu1,协方差矩阵为sigma1的高斯分布。
做高斯混合模型实验,需要生成一批二维数据,数据符合高斯分布(正态分布)。
生成300个数据,数据是符合均值为mu1,协方差矩阵为sigma1的高斯分布。
做高斯混合模型实验,需要生成一批二维数据,数据符合高斯分布(正态分布)。
mu1 = [1 2];
sigma1 = [1 0;0 1];
mu2 = [50 89];
sigma2 = [10 0;0 50];
data1 = mvnrnd(mu1,sigma1,300);
data2 = mvnrnd(mu2,sigma2,200);
plot(data1(:,1),data1(:,2),'r+');
hold on;
plot(data2(:,1),data2(:,2),'b*');
mvnrnd:Multivariate normal random numbers
mvnrnd 是用来生成多维正态数据的。
B = repmat(A,m,n)
将矩阵 A 复制 m×n 块,即把 A 作为 B 的元素,B 由 m×n 个 A 平铺而成。B 的维数是 [size(A,1)*m, size(A,2)*n]
randperm:>> a = [1,2;3,4]
a =
1 2
3 4
>> b = repmat(a,2,3)
b =
1 2 1 2 1 2
3 4 3 4 3 4
1 2 1 2 1 2
3 4 3 4 3 4 randperm(n)产生1到n的整数的无重复的随机排列,利用它就可以得到无重复的随机数。
a = randperm(5) ;%通常每次运行结果不一样
a = [2,1,5,3,4];
创建目录:
savePath='C:\Users\Administrator\Desktop\matlab-work\Imgaes2\';
for i = 1:100
mkdir(savePath,num2str(i));
end
savepath为所在父路径名,num2str(i)为创建目录名
复制文件:
savepath为所在父路径名,num2str(i)为创建目录名
复制文件:
copyfile(src.jpg,dst.jpg); 复制src文件并命名为dst.jpg。前面可以加路径。
输出信息:
输出信息:
i = 10;
LengthFiles = 100;
LengthFiles = 100;
fprintf('process(%d, %d)\n', i,LengthFiles);
数字转字符: for i = 2:5
fullName=[pathName,num2str(i),'\1.bmp'];
end
清除:end
内容清除:clear;
清空命令行:clc;
查找图片文件dir (fullfile(,)):
path='F:\photo\';
Files = dir(fullfile(path,'*.jpg'));
LengthFiles = length(Files);
for i=1:LengthFiles
Img = imread([path,Files(i).name]);
imshow(Img);
end
dir()返回的是一个文件列表
参考:http://www.aiseminar.cn/bbs/forum.php?mod=viewthread&tid=79
dir()返回的是一个文件列表
参考:http://www.aiseminar.cn/bbs/forum.php?mod=viewthread&tid=79
图像处理:
图像读入:
1. 直接打开
I=imread('C:\Users\Administrator\Desktop\模式识别\人脸采集\训练用\a1.bmp');
imshow(I1);
显示多个图像:
mysize=size(I1);
mysize 是一个三列的行向量。
图像的保存:
imwrite(I1,'C:\a1.png') ;
图像灰度化:
% im2bw(gray_img,ratio);gray_img需为只有一维颜色的灰度图,灰度图中灰度值超过ratio*255就变白,否则就是黑
f=imread('2.tiff')
subplot(2,2,1),imshow(f),title('原始图像');
ff0=im2bw(f,0.3);
subplot(2,2,2),imshow(ff0),title('域值取0.3的二值图像');
ff1=im2bw(f,0.5);
subplot(2,2,3),imshow(ff1),title('域值取0.5的二值图像');
ff2=im2bw(f,0.7);
subplot(2,2,4),imshow(ff2),title('域值取0.7的二值图像');
ff0=im2bw(f,0.3);
figure % 打开一个新的窗口显示灰度图像
imshow(imgGray); % 显示转化后的灰度图像
连通域处理函数参照:
http://blog.sina.com.cn/s/blog_4d648afc01017ggb.html ;
logical函数:
将数据类型转换成逻辑类型(true 或false)!
任何非零的数据都转换成true,而0被转换成false;
>> bool1=logical(-1)
bool1 =1
>> bool2=logical(0)
bool2 =0
字符串拼接:
str1=‘hello’;
str2=' world';
str=[str1,str2];
再如:
图像读入:
1. 直接打开
I=imread('C:\Users\Administrator\Desktop\模式识别\人脸采集\训练用\a1.bmp');
2.文件形式打开
[fn,pn,fi]=uigetfile('*.bmp','选择图片');
[fn,pn,fi]=uigetfile('*.bmp','选择图片');
I1=imread([pn fn]);
图像显示:imshow(I1);
显示多个图像:
subplot(1,2,1),imshow(I1);
subplot(1,2,2),imshow(I2);
得到图像大小:mysize=size(I1);
mysize 是一个三列的行向量。
图像的保存:
imwrite(I1,'C:\a1.png') ;
图像灰度化:
%rgb2gray(img); img需为rbg形式的图片
fullName=[pathName,num2str(i-1),'_',num2str(j-1),'.bmp'];
fullName=[pathName,num2str(i-1),'_',num2str(j-1),'.bmp'];
img=imread(fullName);
%灰度化
if ndims(img)==3
img=rgb2gray(img);
end
图像二值化:% im2bw(gray_img,ratio);gray_img需为只有一维颜色的灰度图,灰度图中灰度值超过ratio*255就变白,否则就是黑
f=imread('2.tiff')
subplot(2,2,1),imshow(f),title('原始图像');
ff0=im2bw(f,0.3);
subplot(2,2,2),imshow(ff0),title('域值取0.3的二值图像');
ff1=im2bw(f,0.5);
subplot(2,2,3),imshow(ff1),title('域值取0.5的二值图像');
ff2=im2bw(f,0.7);
subplot(2,2,4),imshow(ff2),title('域值取0.7的二值图像');
ff0=im2bw(f,0.3);
figure % 打开一个新的窗口显示灰度图像
imshow(imgGray); % 显示转化后的灰度图像
连通域处理函数参照:
http://blog.sina.com.cn/s/blog_4d648afc01017ggb.html ;
logical函数:
将数据类型转换成逻辑类型(true 或false)!
任何非零的数据都转换成true,而0被转换成false;
>> bool1=logical(-1)
bool1 =1
>> bool2=logical(0)
bool2 =0
字符串拼接:
str1=‘hello’;
str2=' world';
str=[str1,str2];
再如:
pathName='C:\Users\Administrator\Desktop\模式识别\人脸采集\训练用\';
for i = 'a':'n'
for j = '1':'5'
fullName=[pathName,i,'-',j,'.bmp'];
pathNameArray[i-'a',j-'1'] = fullName;
end
end
参考:http://blog.csdn.net/largestone_187/article/details/6000254 ;循环结构,显示一个一维向量的值【祝一维向量用(),多维向量用 [ ],向量下标从1开始】
for i=1:1:3
imgSize(i);
end
快捷键:
ctrl +R 选中注释
ctrl +T 取消注释
F5 保存并运行
F12 设置断点
F10 单步调试
ctrl +C 终止运行
画多个图在一个绘图窗口中:
subplot(m,n,p)或者subplot(mnp)此函数最常用:subplot是将多个图画到一个平面上的工具。其中,m表示是图排成m行,n表示图排成n列,也就是整个figure中有n个图是排成一行的,一共m行,如果第一个数字是2就是表示2行图。p是指你现在要把曲线画到figure中哪个图上,最后一个如果是1表示是从左到右第一个位置。
for i = 'a':'g'
for j = '1':'5'
fullName=[pathName,i,j,'.bmp'];
img=imread(fullName);
subplot('g'-'a'+1,5,(1+(i-'a')*5+j-'1')),imshow(img);
end
end 矩阵的拼接:
a =
1 2 3
2 3 4
b =
4 5 6
5 9 9
竖向合并,c = [a; b]
c =
1 2 3
2 3 4
4 5 6
5 9 9
横向合并,c = [a b]或c = [a, b]。
1 2 3
2 3 4
4 5 6
5 9 9
横向合并,c = [a b]或c = [a, b]。
c =
1 2 3 4 5 6
2 3 4 5 9 9
矩阵的逆序排列:
flip 蹦跳,翻转,倒装
fliplr,左右翻转
flipud,上下翻转
a =
1 2 3
2 3 4
fliplr(a)
ans =
3 2 1
4 3 2
flipud(a)
ans =
2 3 4
1 2 3
numel(A):
number element,返回A矩阵中元素的数量:
a =
1 2 3
2 3 4
numel(a) = 6;
reshape(A,m,n):
把矩阵A改变形状,变为m行n列.(元素个数不变,原矩阵按列排成一排,再按行排成若干排)
a =
1 2
3 4
b = reshape(a,1,4);
b = 1 3 2 4;
如果想让b排成 1 2 3 4,可以b = reshape(a',1,4);
expand,syms:
1 2 3 4 5 6
2 3 4 5 9 9
矩阵的逆序排列:
flip 蹦跳,翻转,倒装
fliplr,左右翻转
flipud,上下翻转
a =
1 2 3
2 3 4
fliplr(a)
ans =
3 2 1
4 3 2
flipud(a)
ans =
2 3 4
1 2 3
numel(A):
number element,返回A矩阵中元素的数量:
a =
1 2 3
2 3 4
numel(a) = 6;
reshape(A,m,n):
把矩阵A改变形状,变为m行n列.(元素个数不变,原矩阵按列排成一排,再按行排成若干排)
a =
1 2
3 4
b = reshape(a,1,4);
b = 1 3 2 4;
如果想让b排成 1 2 3 4,可以b = reshape(a',1,4);
expand,syms:
expand展开多项式,或者铺开矩阵。
运行结果:
expand铺开矩阵:
A = [1 2; 3 4];
>> B = expand(A,[3 2])
把A的每个元素铺开为[3 2]的矩阵
n=8;
syms x; %定义变量x
f = 2*x^2 + 3*x^5;
g = x^2-x+7;
f*g
expand(f*g) 运行结果:
ans =
(3*x^5 + 2*x^2)*(x^2 - x + 7)
ans =
3*x^7 - 3*x^6 + 21*x^5 + 2*x^4 - 2*x^3 + 14*x^2 expand铺开矩阵:
A = [1 2; 3 4];
>> B = expand(A,[3 2])
把A的每个元素铺开为[3 2]的矩阵
B =
1 1 2 2
1 1 2 2
1 1 2 2
3 3 4 4
3 3 4 4
3 3 4 4
交叉验证:n=8;
p_train=eye(n,n); %训练样本的输入
t_train=eye(n,n); %训练样本的输出
p_test=eye(n,n); %验证样本的输入
t_test=eye(n,n); %验证样本的输出
indices=crossvalind('Kfold',length(p_train),5); %5折交叉验证
for i=1:5 %5次循环(交叉验证思想)
disp(['以下为第',num2str(i),'次交叉验证结果'])
test=(indices==i); %test为逻辑类型的列向量
train=~test; %每次取出一折作为验证集,其余4折作为训练集
p_cv_train=p_train(train,:); %交叉验证训练集的输入
t_cv_train=t_train(train,:); %交叉验证训练集的输出
p_cv_test=p_train(test,:); %交叉验证验证集的输入
t_cv_test=t_train(test,:); %交叉验证验证集的输出
参考:http://blog.sina.com.cn/s/blog_7f478b9b0101cwde.html
矩阵排序:
用sort(A)函数
对矩阵默认是按列升序排序。
执行代码:
多列排序
saveM = sortrows(rules_road,[-23,21,22]);
rules_road矩阵按照第23列降序,21列升序,22列降序的顺序排列所有行。
PCA,主成分分析:
Kmeans,聚类:
或者可以:参考:http://blog.sina.com.cn/s/blog_7f478b9b0101cwde.html
矩阵排序:
用sort(A)函数
对矩阵默认是按列升序排序。
执行代码:
A=[0 0.5; 1.2 0.2; 0 1; 1.5 1]';
A =[
0 1.2 0 1.5;
0.5 0.2 1 1
] ;
A =[
0 1.2 0 1.5;
0.5 0.2 1 1
] ;
A
[sp,index] = sort(A)
得到结果:
得到结果:
A =
0 1.2000 0 1.5000
0.5000 0.2000 1.0000 1.0000
sp =
0 0.2000 0 1.0000
0.5000 1.2000 1.0000 1.5000
index =
1 2 1 2
2 1 2 1
参考:http://blog.sina.com.cn/s/blog_61010ebe0100krdq.html ;多列排序
saveM = sortrows(rules_road,[-23,21,22]);
rules_road矩阵按照第23列降序,21列升序,22列降序的顺序排列所有行。
PCA,主成分分析:
%PCA处理data_input,降维
x=data_input;
[coef,score,latent,t2] = princomp(x);%调用princomp函数降维
latent=100*latent/sum(latent); %将latent总和统一为100,便于观察贡献率 pareto(latent);%调用matla画图
for k=1:length(latent)
if(latent(k)>0.1) %贡献值大于0.1%的维度选入bp输入层
xx(:,k)=score(:,k);
else
break;
end
end
data_input=xx;
参考:http://www.360doc.com/content/14/0104/10/14713231_342509814.shtmlKmeans,聚类:
load eightAllM.mat
K = 100;
ldx = kmeans(eightAllM,K);
eightAllM矩阵中每行为一个样本数据,分为K类。
ldx为一个列向量,分别为每个样本的类别。
保存数据到文件.mat,读入 .mat文件eightAllM矩阵中每行为一个样本数据,分为K类。
ldx为一个列向量,分别为每个样本的类别。
myMatrix = [
0 0;
200 0;
0 100;
0 300;
600 0;
600 300;
400 400;
];
save myTrain_inst.mat myMatrix a=[1 2 3 4 5 6 7 8 9 10];
save(‘var.mat’,'a'); %将变量a保存在var.mat文件中
如果需要在名字中使用变量则可以:
i=1;
file = [num2str(i),'M'];
save(file,'myMatrix')
或者save ([num2str(i),'M'], 'myMatrix');保存的文件为1M
%下面是调用
b=load('var.mat','a'); %将var.mat中的变量a读取出,放在b中,b是一个结构体。
神经网络工具箱里的整形函数:
参考:http://blog.sina.com.cn/s/blog_6e09af650100zbte.html
归一化函数:mapminmax()
>> x1 = [1,2,4];
>> [y,ps]=mapminmax(x1);
y =-1.0000 -0.3333 1.0000
ps =
name: 'mapminmax'
xrows: 1
xmax: 4
xmin: 1
xrange: 3
yrows: 1
ymax: 1
ymin: -1
yrange: 2
no_change: 0
参考:http://blog.sina.com.cn/s/blog_4936c31d0100uchd.html导入matlab工具包的方法
1 解压文件
把下载的工具箱解压到matlab中的toolbox文件夹里,
2 添加目录
matlab主界面:File——>Set Path...——>点击Add with subfolders...
在浏览文件中,选择刚才的安装路径C:\Program Files\MATLAB\R2012a\toolbox\DeepLearnToolbox-master,点击确定
返回到Set Path对话框,点击左下角的保存按钮,点击Close关闭对话框
3 更新工具箱路径缓存
matlab主界面:File——>Preferences——>General——>选中enable toolbox path cache——>点击updata toolbox path cache
关闭Preferences对话框。
工具箱彻底安装完毕
参考:http://blog.sciencenet.cn/blog-633617-630878.html ;
离散卷积conv:
>> a = [5,3,1];
figure;新增一个图像。
subplot(m,n,p);绘制m行n列的拼图的第p个图。
plot(x);
x为一维数组时绘制一条线,
x为 n 维数组是绘制n条线。
横坐标为数组下标,纵坐标为数组元素的值。
plot(x,y);
绘制一条曲线,
曲线的纵坐标为y数组的值,
曲线的横坐标为x数组的值,
plotyy(x,y1,x,y2,'plot');
在一个图中绘制两条曲线,分别为y1曲线和y2曲线,横坐标为x;
参考:http://hi.baidu.com/njust_neopets/item/d673e808104de3863c42e270
画三角函数的图
plot(a+b+c);
傅里叶变换(FFT)简单使用:
求语音频谱:
%convert.m
wavread,sound
wavread函数用于读入wav格式的音频文件
[xn,Fs,bit] =wavread('D:\\speech_863\\F00C1048.WAV');
其中xn为语音信号序列,Fs为采样率,bit为信号格式。
sound(xn,Fs);
sound用于播放声音,以xn为声音信号序列,以Fs为信号采样率
matlab,plot:
matlab 程序打包成exe文件
1选择合适的编译器
mbuild -setup
mcc -m myfunction.m
等一小会儿,myfunction.exe就生成了。
参考http://pan.baidu.com/s/1c0vRnLu,第30页
如果是图形界面程序 mcc -e ui.m,得到的程序不会出现黑框框
如果要做有界面的程序,输入 guide
如果要使多个函数共享数据,在每个函数中将共享变量用global声明。
>> a = [5,3,1];
>> b = [2,1];
>> c = conv(a,b);
>> c
c =
10 11 5 1
a 为多项式 y1 = 5X^2 + 3X + 1 的系数
b为多项式 y2 = 2X + 1 的系数
y3 = y1*y2 = 10X^3 + 11X^2 +5X + 1
c=conv(a,b),c为多项式 y3 = y1*y2的系数。
matlab画图:a 为多项式 y1 = 5X^2 + 3X + 1 的系数
b为多项式 y2 = 2X + 1 的系数
y3 = y1*y2 = 10X^3 + 11X^2 +5X + 1
c=conv(a,b),c为多项式 y3 = y1*y2的系数。
figure;新增一个图像。
subplot(m,n,p);绘制m行n列的拼图的第p个图。
plot(x);
x为一维数组时绘制一条线,
x为 n 维数组是绘制n条线。
横坐标为数组下标,纵坐标为数组元素的值。
plot(x,y);
绘制一条曲线,
曲线的纵坐标为y数组的值,
曲线的横坐标为x数组的值,
plotyy(x,y1,x,y2,'plot');
在一个图中绘制两条曲线,分别为y1曲线和y2曲线,横坐标为x;
参考:http://hi.baidu.com/njust_neopets/item/d673e808104de3863c42e270
画三角函数的图
a = cos(2*pi*[0:0.01:1]);
b = sin(4*pi*[0:0.01:1]);
c = cos(6*pi*[0:0.01:1]+0.25);
plot([a;b;c]');
holdplot(a+b+c);
傅里叶变换(FFT)简单使用:
a = sin(2*pi*[0:0.001:1]);
plot(a)
f = fft(a);
b = ifft(f);
plot(b);
f1 = abs(f);
b1 = ifft(f1);
hold;%hold为显示图像到现有图框中,figure为新开一个图框显示。
hold;%hold为显示图像到现有图框中,figure为新开一个图框显示。
plot(b1);
求语音频谱:
%convert.m
function convert(filename)
if nargin < 1
filename = 'F16A1.wav';
end
winsize = 512;
shiftsize = 160;
wav = wavread(filename);
window = hamming(winsize);
winc = getframe(wav+0.1*randn(length(wav),1),winsize,shiftsize,window);
sf = fft(winc);%傅里叶变换
ef = ifft(abs(sf).^0.1);%傅里叶逆变换
subplot(121);imagesc(log(abs(sf(winsize/2:end,:))));
subplot(122);imagesc(ef(winsize/2:end,:));
%--- sub func 分帧
function winc = getframe(wav,winsize,shiftsize,window)
slen = length(wav);
numframe = ceil(slen/shiftsize);
winc = zeros(winsize,numframe);
for n = 1:numframe
st = (n-1)*shiftsize;
ed = min(st+winsize,slen);
winc(1:ed-st,n) = wav(st+1:ed);
winc(:,n) = winc(:,n).*window;
end
wavread函数用于读入wav格式的音频文件
[xn,Fs,bit] =wavread('D:\\speech_863\\F00C1048.WAV');
其中xn为语音信号序列,Fs为采样率,bit为信号格式。
sound(xn,Fs);
sound用于播放声音,以xn为声音信号序列,以Fs为信号采样率
matlab,plot:
t = 0:1/16000:0.1;%采样频率16K
f = 100;%信号频率hz
plot(t,sin(2*pi*f*t),'r:');%r红色,:虚线
axis:
在plot写完后 加上axis([0 1 2 3])
则表明图线的x轴范围为0~1, y轴范围为2~3
如 plot(x,y)
axis([0 1 2 3])
grid on
title,xlabel,ylabel,legend,grid。
在画完图后增加图形的说明,如标题,x,y坐标,在右上角加图形注解
plot(x,y),title('合成的信号波形'),ylabel('振幅'),xlabel('x-采样点序号');%legend('y = cos(x)'); % 图形注解,grid on;%打开网格
参考:http://wenku.baidu.com/link?url=bwSq5uIPhubpmU4_fcMANC6GJ0F139_e6wZ3rQme_W9w2MdQ4rrdRQsryNJvXPcBDRktfozZ9go6z4ao_LZTLxJLz4MP67T7EdkfVa2TXuWaxis:
在plot写完后 加上axis([0 1 2 3])
则表明图线的x轴范围为0~1, y轴范围为2~3
如 plot(x,y)
axis([0 1 2 3])
grid on
title,xlabel,ylabel,legend,grid。
在画完图后增加图形的说明,如标题,x,y坐标,在右上角加图形注解
plot(x,y),title('合成的信号波形'),ylabel('振幅'),xlabel('x-采样点序号');%legend('y = cos(x)'); % 图形注解,grid on;%打开网格
matlab 程序打包成exe文件
1选择合适的编译器
mbuild -setup
mcc -m myfunction.m
等一小会儿,myfunction.exe就生成了。
参考http://pan.baidu.com/s/1c0vRnLu,第30页
如果是图形界面程序 mcc -e ui.m,得到的程序不会出现黑框框
如果要做有界面的程序,输入 guide
如果要使多个函数共享数据,在每个函数中将共享变量用global声明。
0 0
- Matlab常用功能代码
- matlab常用代码
- MATLAB画图常用调整代码
- MATLAB画图常用调整代码
- MATLAB画图常用调整代码
- MATLAB画图常用调整代码
- matlab 代码 一些常用的 降维算法
- [MATLAB]MATLAB常用函数
- Matlab常用
- matlab 常用
- 数学建模常用Matlab/Lingo/c代码总结系列——Matlab图形绘制函数汇总
- matlab代码
- 常用的testbench和matlab代码之读取和写入文本代码
- [MATLAB]MATLAB常用函数[转]
- 数学建模常用Matlab/Lingo/c代码总结系列——floyd最短路径
- 数学建模常用Matlab/Lingo/c代码总结系列——最小费用最大流问题
- 数学建模常用Matlab/Lingo/c代码总结系列——整数规划问题
- 数学建模常用Matlab/Lingo/c代码总结系列——旅行商TSP问题
- 使用Terminal 安装dmg文件
- GDI图形设备接口
- Android动画详解
- 一款很好用的桌面录屏软件
- HBase介绍
- matlab常用代码
- jsp的七个动作指令
- DataTime 用法大全
- 命令响应控制器初始化-从Browser对象开始
- JMeter和Badboy的部署
- CURL 学习 1
- UI图标资源站
- Linuxshell字符串截取与拼接
- 一种适合于MC与SMC算法的哈希表设计