花园分享 http://blog.sciencenet.cn/u/zxczxc0417

博文

matlab 函数集合——不断更新中

已有 5068 次阅读 2013-4-8 11:49 |个人分类:乱七八糟|系统分类:观点评述| 电磁弹射器

下划线显示:    xlabel('B_radial');

矩阵累积求和:  a=cumsum(X , n);  

 

 

 

 

fsolve 的应用:

如果是方程组,则可以写为:

f=@(x,a,b)[a*x(1)^2+b*log(x(2));x(1)+x(2)]

x=fsolve(f,[1,1],[],1,1)

第一个1是x的初值,后两个1是a,b的值。

不过,可能这样更好:

x = fsolve(@(x) myfun(x,kk), x0, options);% 其中kk为传递的系数

 

 

 

非线性拟合:

option = optimset('TolX',1e-5,'MaxFunEvals', 1e18, 'MaxIter', 1000);

coeff = fminsearch( 'fit_sphere_r',[ x0 y0 sem_r ], option, bx, by );

coeff = fmincon(  'fit_sphere_r',[ x0 y0 sem_r ],[],[],[],[],lowb,highb,[], option, bx, by );


非线性拟合:

myfunc=inline('beta(1)*exp(-beta(2)*x)+beta(3)','beta','x');

myfunc=inline('beta(1)*exp(-( x-beta(2) ).^2/2/beta(3)^2 )+beta(4)','beta','x');
[beta,Re,j]=nlinfit(x,y,myfunc,[b10 b20 b30]);

 

图片转电影:

imshow(a, [10 200], 'border','tight','initialmagnification','fit' );
   set (gcf,'Position',[100,100,200,200]);
   axis normal;

M(cn)=getframe;

movie2avi(M, 'm2.avi', 'compression', 'None');

 

等分区间:x1 = linspace( -len, len, 200 );

去除面上的线条: surf(X, Y, histvalue, 'LineStyle', 'none');

设置坐标轴的字体和刻度:

set(gca,'FontSize',20);

 

lx = -rx :rx/2: rx;
ltx = -rx :rx/2: rx;
set( gca,'xtick',lx,'xticklabel',ltx );

 

排序:

B = sortrows(A)
B = sortrows(A,column)
[B,index] = sortrows(A,...)

 

保存高分辨率图片:

set(gcf, 'PaperPositionMode', 'Auto');
set(gcf, 'PaperType', 'USLetter');
set(gcf, 'Renderer', 'zbuffer');
print( 1, '-r300' , '-dtiff','my_test_picture300.tif' );

 

源代码加密

pcode fun
pcode *.m
pcode fun1fun2 ...
pcode... -inplace

 

快速读取tif文件

 http://blogs.mathworks.com/steve/2009/04/02/matlab-r2009a-imread-and-multipage-tiffs/

fname = 'my_file_with_lots_of_images.tif';
info = imfinfo(fname);
num_images = numel(info);
for k = 1:num_images
   A = imread(fname, k, 'Info', info);
   % ... Do something with image A ...
end

 

set(gca,'XDir','reverse','YDir','reverse'); % X Y 轴颠倒

mcc  -l get_thr.m   dll 文件

mcc -m gui_1.m     生成可执行文件

 

squeeze( each_frame( i, :, : ) )     缩小矩阵的维度,对3维以上有用;

B = reshape(A,1,[]);                 矩阵的维度的随意改变,二维有效,其他不知道

 

 

tic
for k=1:100
   s=sum(k);
end
toc

 

MATLAB调用C/C++函数的方法

http://dev.10086.cn/cmdn/bbs/viewthread.php?tid=20428

 

function format = get_format_from_filename(filename)

format = '';

idx = find(filename == '.');

if (~isempty(idx))
 
   ext = filename((idx(end) + 1):end);
   fmt_s = imformats(ext);
 
   if (~isempty(fmt_s))
       format = ext;
   end

end

 

strm = RandStream('mt19937ar'); % reproducible RandStream.setDefaultStream(strm); y = randn(1000, 1); [ACF, Lags] = autocorr(y, 10); [Lags ACF ACF*var(y,1)] ans = 0 1.0000 0.9969 1.0000 0.0360 0.0359 2.0000 0.0441 0.0439 3.0000 -0.0271 -0.0271 4.0000 -0.0452 -0.0451 5.0000 -0.0173 -0.0172 6.0000 0.0456 0.0454 7.0000 -0.0136 -0.0135 8.0000 0.0332 0.0331 9.0000 -0.0356 -0.0355 10.0000 -0.0115 -0.0115

 

 

1、构造数组的方法:增量发和linspace(first,last,num)first和last为起始和终止数,num为需要的数组元素个数。
2、构造矩阵的方法:可以直接用[ ]来输入数组,也可以用以下提供的函数来生成矩阵。

ones( )   创建一个所有元素都为1的矩阵,其中可以制定维数,1,2….个变量
zeros()   创建一个所有元素都为0的矩阵
eye()     创建对角元素为1,其他元素为0的矩阵
diag()    根据向量创建对角矩阵,即以向量的元素为对角元素
magic()   创建魔方矩阵
rand()    创建随机矩阵,服从均匀分布
randn()   创建随机矩阵,服从正态分布
randperm()         创建随机行向量
horcat             C=[A,B],水平聚合矩阵,还可以用cat(1,A,B)
vercat             C=[A;B],垂直聚合矩阵, 还可以用cat(2,A,B)
repmat(M,v,h)      将矩阵M在垂直方向上聚合v次,在水平方向上聚合h次
blkdiag(A,B)     以A,和B为块创建块对角矩阵
length             返回矩阵最长维的的长度
ndims              返回维数
numel              返回矩阵元素个数
size               返回每一维的长度,[rows,cols]=size(A)
reshape            重塑矩阵,reshape(A,2,6),将A变为2×6的矩阵,按列排列。
rot90              旋转矩阵90度,逆时针方向
fliplr             沿垂轴翻转矩阵
flipud             沿水平轴翻转矩阵
transpose          沿主对角线翻转矩阵
ctranspose         转置矩阵,也可用A’或A.’,这仅当矩阵为复数矩阵时才有区别
inv                矩阵的逆
det                矩阵的行列式值
trace              矩阵对角元素的和
norm               矩阵或矢量的范数,norm(a,1),norm(a,Inf)…….
normest            估计矩阵的最大范数矢量
chol               矩阵的cholesky分解
cholinc            不完全cholesky分解
lu                 LU分解
luinc              不完全LU分解
qr                 正交分解
kron(A,B)        A为m×n,B为p×q,则生成mp×nq的矩阵,A的每一个元素都会乘上B,并占据p×q大小的空间
rank               求出矩阵的刺
pinv               求伪逆矩阵
A^p                对A进行操作
A.^P               对A中的每一个元素进行操作

 



https://wap.sciencenet.cn/blog-236430-678156.html

上一篇:Matlab动画制作(四)——生成gif文件
下一篇:个人怎样摆脱棱镜计划的折射
收藏 IP: 221.224.90.*| 热度|

1 杨华磊

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-5-23 23:05

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部