matlabmatlab利用自定义函数数如何求解

自定义功能函数-matlab
matlab中反复重写的函数。
lee_DrawLine
function [] = lee_DrawLine( param, char, range )
switch char
pt1=cross(param,[1;0;-range(1)]);
pt1=pt1./pt1(3);
pt2=cross(param,[1;0;-range(2)]);
pt2=pt2./pt2(3);
pt1=cross(param,[0;1;-range(1)]);
pt1=pt1./pt1(3);
pt2=cross(param,[0;1;-range(2)]);
pt2=pt2./pt2(3);
line( [pt1(1), pt2(1)], [pt1(2), pt2(2)]);
lee_DrawLine3
function [] = lee_DrawLine3( cen, vec, length )
x2 = cen + vec * length;
line( [x1(1), x2(1)], [x1(2), x2(2)], [x1(3), x2(3)]);
lee_DrawPlane
function [] = lee_DrawPlane( param, xRange, yRange, step, a )
if nargin &= 4
if nargin &= 3
x = xRange(1) : step : xRange(2);
y = yRange(1) : step : yRange(2);
[x,y]=meshgrid(x,y);
z=-(param(1)*x+param(2)*y+param(4))/param(3);
surf(x,y,z);
lee_Fill_Line
连接多段线端点
function outPts = lee_Fill_Line( inPts, step )
outPts = inP
while i & size( inPts, 2)
length = norm( inPts( :, i) - inPts( :, i+1) );
num = floor( length / step );
Fstep = ( inPts( :, i+1) - inPts( :, i) )/
tPtM = [];
for j = 1: num
tPtM = [ tPtM, inPts( :, i) + Fstep * j];
outPts = [ outPts(:,1:i), tPtM, outPts( :,i+1: size( outPts, 2))];
i = i + 1;
lee_RemoveHomoFactor
function outPts = lee_RemoveHomoFactor( inPts )
[m,~] = size(inPts);
outPts = inP
for i = 1 : m-1
outPts(i,:) = outPts(i,:) ./ outPts(m,:);
outPts(m,:) = [];
lee_CalcCrossMatrix
算叉乘算子
产生一个三维向量的叉乘算子
function crossM = lee_CalcCrossMatrix( e )
crossM = [0 -e(3) e(2); e(3) 0 -e(1); -e(2), e(1), 0];
lee_CalcLineParam
算直线参数
function lparam = lee_CalcLineParam( pt1, pt2 )
Eq1 = A * pt1(1) + B * pt1(2) + 1;
Eq2 = A * pt2(1) + B * pt2(2) + 1;
[a, b]=solve(Eq1,Eq2,'A','B');
lparam = [double(a), double(b), 1];
lee_pt3_from_pts2_F
function [Pts, vec, e] = lee_pt3_from_pts2_F( pts1, pts2, CamParam, F )
[~, m] = size(pts1);
[~, n] = size(pts2);
for i = 1 : m
l2 = F * [ pts1(:, i); 1];
div = ( l2(1)^2 + l2(2)^2 )^ 0.5;
e = 0.5 * 2^ 0.5 *
for j = 1 : n
if abs( l2' * [ pts2(:, j); 1]) & e
t_P = triangulate( pts1(:, i)', pts2(:, j)', CamParam);
Pts = [ Pts, t_P'];
covM = cov(Pts');
[v, e] = eig(covM);
[~, pos] = find( e == min(min( e(e~=0) )) );
vec = v(:, pos(1));
lee_H_from_P
function [H, H1, H2] = lee_H_fromP( CamParam, PlaneParam, isPixel)
if nargin &= 2
isPixel = 0;
v = PlaneParam(1:3)./PlaneParam(4);
K1 = CamParam.CameraParameters1.IntrinsicMatrix';
K2 = CamParam.CameraParameters2.IntrinsicMatrix';
R2 = CamParam.RotationOfCamera2';
T2 = CamParam.TranslationOfCamera2';
P1 = K1 * [diag([1,1,1]), zeros(3,1)];
P2 = K2 * [R2, T2];
= P2 * [0 0 0 1]';
= P2* pinv(P1);
A - e * v / K1;
H1 = [ inv(K1); -v/ K1];
H2 = H1/H;
if isPixel == 1
TC1 = [0 0 -1/v(3)]';
AxisX = [0 0 1];
if( AxisZ(1)==0 && AxisZ(2)==0 )
AxisX = [1 0 0];
AxisX = cross( AxisZ, AxisX);
AxisY = cross( AxisZ, AxisX);
AxisX = AxisX./norm(AxisX);
AxisY = AxisY./norm(AxisY);
AxisZ = AxisZ./norm(AxisZ);
RC1 = [AxisX', AxisY', AxisZ']';
RTC1= [RC1, -RC1*TC1; 0 0 0 1];
RTC1(3,:) = [];
H1 = RTC1* H1;
H2 = RTC1* H2;
lee_PtsGen_SymAxis
求点集轴对称
生成与输入点集关于输入直线轴对称的点集
inPts, 2*m矩阵, xy制
lparam, 直线参数[A B C], Ax+By+C=0
outPts, 2*m矩阵, xy制
%% Function
function outPts = lee_PtsGen_SymAxis( inPts, lparam )
lx = - lparam(3)/lparam(1);
inPts(1,:) = inPts(1,:) -
%k = - lparam(2)/lparam(1);
AxisX = [lparam(2), -lparam(1)];
AxisX = AxisX./norm(AxisX);
R = [AxisX(1), AxisX(2); AxisX(2), -AxisX(1)];
inPts = R * inP
outPts = inP
outPts(2,:) = -outPts(2,:);
outPts = R * outP
outPts(1,:) = outPts(1,:) +
lee_MatModel_Mat
展开一个点云模型
function outModel = lee_MatModel_Mat( inModel, coor, scale )
if nargin &= 2
scale = 1;
= coor(:,1);
AxisZ = coor(:,2);
AxisX = coor(:,3);
AxisY = cross( AxisZ, AxisX);
AxisX = cross( AxisY, AxisZ);
AxisX = AxisX./norm(AxisX);
AxisY = AxisY./norm(AxisY);
AxisZ = AxisZ./norm(AxisZ);
inModel = inModel - repmat( Ori, [ 1, size(inModel,2)]);
inModel = [ AxisX'; AxisY'; AxisZ']* inM
[outModel(:,1),outModel(:,2),outModel(:,3)] = cart2pol(inModel(1,:)',inModel(2,:)',inModel(3,:)');
outModel = outModel';
outModel(1,:) = outModel(1,:) .*
没有更多推荐了,
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!MATLAB怎么创建自定义函数_百度经验
&&&&&&互联网MATLAB怎么创建自定义函数听语音123456
百度经验:jingyan.baidu.com有时候我们在使用MATLAB的时候,想创建自定义函数,怎么操作呢,下面来分享一下方法百度经验:jingyan.baidu.com电脑MATLAB百度经验:jingyan.baidu.com1第一步在我们的电脑上打开软件,并创建一个工作路径文件夹,创建工作路径可以百度搜索一下,如下图所示:2第二步我们右键工作路径文件夹,选择“新建文件-&函数”,如下图所示:3第三步创建一个函数之后,我们在编辑器中输入函数代码,函数名需要与下面写的函数名test一致,如下图所示:4第四步我们写完函数之后,点击上方的保存,也可以使用ctrl+s键进行保存,如下图所示:5第五步我们打开命令行窗口,输入函数名称和参数进行调用函数,如下图所示:6第六步按回车键之后,可以看到函数被成功调用了,并执行出结果,如下图所示:END百度经验:jingyan.baidu.com如果你觉得这篇对你有用的话,请投一下票经验内容仅供参考,如果您需解决具体问题(尤其法律、医学等领域),建议您详细咨询相关领域专业人士。作者声明:本篇经验系本人依照真实经历原创,未经许可,谢绝转载。投票(24)已投票(24)有得(0)我有疑问(0)◆◆说说为什么给这篇经验投票吧!我为什么投票...你还可以输入500字◆◆只有签约作者及以上等级才可发有得&你还可以输入1000字◆◆如对这篇经验有疑问,可反馈给作者,经验作者会尽力为您解决!你还可以输入500字相关经验015449热门杂志第1期你不知道的iPad技巧3788次分享第1期win7电脑那些事6643次分享第2期新人玩转百度经验1412次分享第1期Win8.1实用小技巧2651次分享第1期小白装大神1928次分享◆请扫描分享到朋友圈matlab函数求解问题。初学者- -。... | 问答 | 问答 | 果壳网 科技有意思
matlab函数求解问题。初学者- -。
function f=fun(x)f=x(1)^2+sin(x(1)*x(2))+2*x(2)以fun.m存储在默认文件夹里。但是为什么就是报错。报错结果:??? Input argument "x" is undefined.Error in ==& fun1 at 2f=x(1)^2+sin(x(1)*x(2))+2*x(2)求解答- -
这种短小的,只有1个变量,可以直接赋值的函数推荐写用function handle,代入变量最直观~$ fun = @(x) x(:,1).^2+sin(x(:,1).*x(:,2))+2*x(:,2)(~$这个是我的bash,可以无视)这个时候'fun'这个变量就被记入了工作空间,类型为function handle然后在命令行输入:~$ fun([1 2])可得到:~$ ans =
5.68如果想画这个z = f(x_1,x_2)函数零点附近的图:可以输入:~$
[x,y] = meshgrid(-5:0.1:5,-5:0.1:5);
z = fun([x(:) y(:)]);
z = reshape(z,size(x,1),size(x,2));
surf(x,y,z)便可以得到下图:注1:MATLAB的向量运算因为是调用Fortran,所以使用列向量作为储存变量的方式:x(:,1)一般来说比x(1)来得更快。注2:MATLAB向量的代数运算是.^和.*和./,一般用^ * /在进行大量操作的时候容易让mtimes 和mpower报错。
生物物理博士生
运行的时候你需要把2维矢量x代入方程。试试看:
%%(或者随便哪两个数)
fun(x)应该就能看到了。
后回答问题,你也可以用以下帐号直接登录
(C)果壳网&&&&京ICP证100430号&&&&京网文[-239号&&&&新出发京零字东150005号&&&&
违法和不良信息举报邮箱:&&&&举报电话:&&&&&&&&怎么实现matlab自定义函数(而不是在m文件中)中调用simulink? - 知乎有问题,上知乎。知乎作为中文互联网最大的知识分享平台,以「知识连接一切」为愿景,致力于构建一个人人都可以便捷接入的知识分享网络,让人们便捷地与世界分享知识、经验和见解,发现更大的世界。9被浏览444分享邀请回答function the_best_function()
options = simset('SrcWorkspace', 'current');
sim(modelname, [], options)
更新一点的版本里可以直接用sim(modelname, ‘SrcWorkspace’, ‘current’)但是注意这个方法不能和PCT(并行计算工具箱)一起用。然后,如果要用PCT的话,可以这样搞hw = get_param(modelname, ‘modelworkspace’)hw.assignin(variablename, value)也就是把变量assign到模型的model workspace里面。不过这种方法会把模型变dirty,所以如果函数的开头用open_system(modelname)或者load_system(modelname)那么结尾最好用 close_system(modelname, 0)避免保存修改的模型以上这些基本技巧应该够用了最后,重要的事情说三遍:不要用全局变量,不要用全局变量,任何情况下都不要用全局变量。23 条评论分享收藏感谢收起写回答}

我要回帖

更多关于 matlab中自定义函数 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信