MATLAB总结二
1、如何将一个多项式中的系数按照幂次提取出来?
sym2poly(ans) %ans为一个多项式。
2、在写第二份模式识别的大作业时遇到如下困难:
每个样本贡献给总概率的是一个关于x的表达式,我将所有的样本的关于x的表达式都给加起来,就得到关于x的一个总的表达式,设为y。
在函数运行过程中,你并不知道这个y表示的到底是个什么函数。
但是,我需要把x赋上一系列的值,从而得到关于函数值y,打出点来。
首先尝试了函数句柄的方法,我认为这个应该可以行的通,于是查询了它的用法:
%函数句柄是MATLAB中的一类特殊的数据结构。作用是将一个函数封装成一个变量,使其能够像其他变量一样在程序的不同部分传递。 % 函数句柄的创建% 方式1 : 直接加@
% 语法:@函数名fun1 = @sin; % 方式2 : str2func函数
% 语法:str2fun('函数名')
fun2 = str2func('cos'); % 方式3 : 匿名函数
% 语法:@(参数列表)单行表达式
fun3 = @(x, y)x.^ + y.^; % 函数句柄的调用fun1(pi);fun3(,);
>>sqr = @(x) x.^
>>a = sqr([, , ])
a =
%函数句柄作为另一个函数的参数传入的用法
%新建M文件f1.m function y=f1(X) x1=X();x2=X();
y=x1^+x1*x2; %新建M文件ftest.m function Y=ftest(f,X)%求一个二维函数在指定点的梯度值,f即为这个二维函数,优点:在f1中定义其他任何函数,而ftest不需要改变
syms x1 x2;
F=f([x1,x2]);%根据f1.m的用法传入参数
v=[x1,x2];
grad=jacobian(F,v);
Y=subs(grad,v,X); %在MATLAB命令窗口输入Y=ftest(@f1,[,]),得到结果: Y =
但是遇到如下问题:方式3中必须使单行已知表达式,无法用一个变量代替这个表达式,我进行了以下实验。
>> syms x y
>> z = x.^ + y.^;
>> fun3 = @(x, y)z;
>> fun3(,) ans = x^ + y^2%ans的值并没有赋进去
如何用函数句柄的方式达到自己想要的目的,以及函数句柄究竟好用在哪里,需要进一步实验。
在换了无数种提问方式之后,终于找到了问题的答案——内联函数
>> syms x y
>> z = x.^ + y.^; >> inline(z) ans = 内联函数:
ans(x,y) = x.^+y.^ >> z(,)
错误使用 sub2ind (line )
下标超出范围。 出错 sym/subsref (line )
R_tilde = sub2ind(size(L), Idx.subs{:}); >> ans(,) ans =
f=inline('x+y','x','y'); f(,) ans = 5
语法格式为:
变量名=inline(表达式); 2 变量名=inline('函数表达式', '变量名1','变量名2', ... ,'变量名n');(推荐)
inline函数可以对某个变量调用数组
>> syms x a b
>> z = *cos(a*x)-b;
>> f = inline(z) f = 内联函数:
f(a,b,x) = -b+cos(a.*x).*2.0 >> f = inline(z,'x','a','b')%在inline函数中确定了参数的先后顺序,在下面对应地赋值 f = 内联函数:
f(x,a,b) = -b+cos(a.*x).*2.0 >> g = f([pi/ pi/3.5], , ) g = -2.0000 -2.8019
除此之外,学习到了feval函数的用法,虽然不能解决我目前碰到的这个问题,但是可以方便我以后的编程。
feval函数的最通常的应用是以下形式:
feval('functionname',parameter),举个简单的例子:
比如要计算sin(2),当然可以直接用命令y=sin(2);利用feval,还可以这样来做:
y=feval('sin',2);另外这里的函数名字还可以是一个函数句柄,即h=@sin;
y=feval(h,2);或者直接写成y=feval_r(@sin,2);
>> feval('sin', ) ans = 0.9093 >> feval('sin', [,]) ans = 0.8415 0.9093 >> feval(@sin, [,]) ans = 0.8415 0.9093
个人觉得,这个函数的方便之处在于,你可以给函数的第二个参数赋进去一个向量(数组),这样一次就可以得到不同参数的不同结果。
MATLAB总结二的更多相关文章
- matlab绘制二维图形
常用的二维图形命令: plot:绘制二维图形 loglog:用全对数坐标绘图 semilogx:用半对数坐标(X)绘图 semilogy:用半对数坐标(Y)绘图 fill:绘制二维多边填充图形 pol ...
- matlab画二维直方图以及双y轴坐标如何修改另一边y轴的颜色
1.首先讲一下如何用hist画二维直方图 x=[- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ...
- 致敬学长!J20航模遥控器开源项目计划【开局篇】 | 先做一个开机界面 | MATLAB图像二值化 | Img2Lcd图片取模 | OLED显示图片
我们的开源宗旨:自由 协调 开放 合作 共享 拥抱开源,丰富国内开源生态,开展多人运动,欢迎加入我们哈~ 和一群志同道合的人,做自己所热爱的事! 项目开源地址:https://github.com/C ...
- matlab的二维卷积操作
MATLAB的conv2函数实现步骤(conv2(A,B)): 其中,矩阵A和B的尺寸分别为ma*na即mb*nb ① 对矩阵A补零,第一行之前和最后一行之后都补mb-1行,第一列之前和最后一列之后都 ...
- MATLAB实现二值化函数
function bc = binary_conversion(a) %这是灰度值二值化转换函数,阈值为平均值j=imread(a); %读取灰度图像 j=double ...
- matlab 画二维图与三维图
二维图 ezplot('sin(x)');%默认范围 ezplot('sin(x)',[-4 4]);%自己设定范围 三维图 ezmesh('x*x+y*y');%默认范围
- matlab随笔(二)
circshift 两种形式 :第一种Y = circshift(A,K)就不用说了,将A中的元素向右移动K个位置. 需要注意的是第二种形式:Y = circshift(A,K,dim),这种形式不好 ...
- matlab的二维卷积操作(转)
MATLAB的conv2函数实现步骤(conv2(A,B)): 其中,矩阵A和B的尺寸分别为ma*na即mb*nb ① 对矩阵A补零,第一行之前和最后一行之后都补mb-1行,第一列之前和最后一列之后都 ...
- Matlab找二维数组最大值
1.m先max(x)求出每列最大值,返回行向量,再max对行向量求出最大值,就是max(max(x)). 注意:max(x),不管x是行列向量,只要是向量,那么就返回一个值. 2.先x(:)转为按列的 ...
随机推荐
- 利用jQuery与.ashx完成简单的Ajax
在ASP.NET同样可以与其它编程语言一样,利用前台的Ajax技术,只是需要注意的是,后台的处理程序不再是一个aspx页面中的Page_Load,而且ASP.NET独有的“一般处理程序”.ashx,下 ...
- [AH2017/HNOI2017]大佬(动态规划 搜索)
/* 神仙yyb 理解题意可以发现 能够对大佬造成的伤害只和你怼了多少天大佬有关, 而且显然天数越多越好 那么我们可以先通过预处理来找出我们最多能够怼多少天大佬 然后我们发现最后我们能怼的血量状态数是 ...
- elasticsearch无故关闭,Log无报错
可以看到图中的关闭log之前没有任务报错,这也让博主非常抓狂,这看着就像是人为关闭的,于是博主在群里问是不是有人动过该服务,确认没人关闭后,百度无果,社区上也没找到有关信息,最后灵光一闪,猜测是不是因 ...
- QT编写TCP入门+简单的实际项目(附源程序)
我个人感觉学习QT不需要那么深入的了解,因为我就是编写一下界面来实现理想的功能而已,我不是靠这个吃饭,当然以后要是从事这个方向那就好好深入底层好好学了. 学习QT的TCP:第一步:去百度看看TCP的介 ...
- 怎么转化为LPCWSTR
wstring a = L"hello ,中国"; LPCWSTR b; b =(LPCWSTR) a.c_str(); RemoveDirectory(b); C++中L和_T( ...
- docekr-image的区别和container;docker run和start,create
copy by: https://www.simapple.com/326.html 容器(container)的定义和镜像(image)几乎一模一样,也是一堆层的统一视角,唯一区别在于容器的最上面那 ...
- service和pod通过标签绑定
service和pod绑定 apiVersion: v1 kind: Service metadata: name: my-haproxy labels: app: my-haproxy spec: ...
- Exchange Server and Update Rollup Build Numbers
原文链接https://social.technet.microsoft.com/wiki/contents/articles/240.exchange-server-and-update-rollu ...
- <转载> FreeNAS的安装和简单配置 http://freenas.cn/?p=342
前些日子在公司搭了一个模拟生产环境的平台.由于是测试环境,资源有限只能使用虚拟机实现,所以存储这块就想到了使用FreeNAS.很早以前玩儿过几次,当时是生产环境需要上存储设备,经过对比还是选择的更可靠 ...
- weblogic stage更改不马上生效
在主机上domins中存在stage目录,且删除相关文件后页面访问报404 mc11>home/ap/user/domins/user/stage/project/project.war/js/ ...