过冷水诚挚邀请你加入Matlab仿真秀官方交流群进行Matlab学习、问题咨询、 Matlab相关资料下载,群号:927550334
过冷水在进行学习过程中总是遇到一些看似无关紧要的问题,做起来却很繁琐,比如给你一个函数:
做具体计算的时候需要把它写入Matlab中,按照阅读习惯你总是会写成这样:
y=log(n1/(x1*n1 x2*n2*m21)) x2*((n2*m21)/(x1*n1 x2*n2*m21)-(n1*m12)/(x2*n2 x2*n1*m12)) ... -(x2^2/2)*((c1*m21^2*log(m21))/(x1 x2*m21)^2-(c2*m12*log(m12)/(x2*n2 x
有人问我你这个输入对不对,有没有错误,我就笑了当然是对的,不信你自己去检查啊!过冷水在实际运行中重视要检查好几遍公式有没有输错项。一旦计算错误,总是怀疑是不是自己公式输错了回头再核验一遍,检查一遍输入公式感觉过了好几个世纪。为何matlab不能人性化的以我们比较习惯的方式呈现公式?还是电脑语言和人脑思维有不可逾越的鸿沟?知道我接触到latex()函数。还是自己接触的知识少。关于latex()你可以这样用:
Y=latex(y)
咋一看,这有什么用?更加复杂了,纯粹是画蛇添足。若是读者之前有看过推文matlab绘图,用一点点贯通的思想就可以把该形式和绘图联系起来。
figure1 = figure('Color',[1 1 1]); axes1 = axes('Parent',figure1,'Position',[0.13 0.11 0.8 0.8]); axis off hold(axes1,'on'); text('Parent',axes1,'FontSize',16,'FontName','Times New Roman','Interpreter','latex','String',str,'Position',[-0.0829467939972715 0.339583333333333 0],'Visible','on'); set(axes1,'FontName','Times New Roman','FontSize',14,'FontWeight','bo
这段代码将会给出我们这么一副图,这样对比起来是不是就容易的多了,这个灵感也是过冷水无意间想到的,简单的代码我们要学会妙用。在实践过程中,过冷水还遇到多项式拟合的问题,在我们不知道实验数据结构的时候通常都是先画出图像,对图像进行结构分析然后再用具体函数去拟合系数。多项式拟合大家用的比较多一点,便捷一点的方法是用工具箱拟合多项式,可以实时调节参数如下图:
左边方框给出了我们拟合结果,对于初入新手而言多项式已经确定,任务完成,过冷水在经常使用工具箱拟合时颇感不便,每次确定好系数后都需要手敲系数重新输入公式真的好麻烦,一点都不自动化,于是自己就总结出了一套小技巧。1工具箱确定函数形式;2 p=polyfit(x,y,n)求系数;3 y=ploy2sym(p);
X=linspace(0.12,1,50);x=1./X;y=(x.^4.*exp(x))./(exp(x)-1).^2; p=polyfit(x,y,5); f=poly2sym(p) f = - (7818024459947303*x^5)/2305843009213693952 (6155067065834809*x^4)
很便捷吧!因为为热爱,所以精通。过冷水在学习过程的总是会遇到比人遇不到的麻烦,你学或者不学困难都在哪里,不增不减,与其逃避,不如做真正的勇士,去坦然面对如下问题:
请问这是该如何才能是实现其编程化,这是一个大复杂的问题,我们的把复杂的问题简单化,来看看这么一个问题:
这个时候又有一个函数symsum,可以实现累计求和的目的。
syms n symsum((-1)^n*0.5^n/n,n,1,inf) ans = -log(3/2)
通过该函数可以实现符号表达式的累计求和,为我们的big problem 提供解决思路。具体怎么实现还是一个复杂的问题,思路讲起来有点麻烦,预知后事且听下回分解。
过冷水发表于仿真秀 平台原创文章,未经授权禁止私自转载,如需转载请需要和作者沟通表明授权声明,未授权文章皆视为侵权行为,必将追责。如果您希望加入Matlab仿真秀官方交流群进行Matlab学习、问题咨询、 Matlab相关资料下载均可加群:927550334。
精品回顾
过冷水和你分享 matlab读取存储各种文件的方法 文末有独家金曲分享