matlab 自定义函数中sqrt函数数据如何定义

& 在matlab中经常需要对数据进行曲线拟合,如最常见的多项式拟合,一般可以通过cftool调用曲线拟合工具(curve fit tool),通过图形界面可以很方便的进行曲线拟合,但是有些时候也会遇到不方便用图形工具。因此这里简单的记下两种常用的拟合方法。 1 多项式拟合(polyfit和polyval) polyfit可以对数据进行拟合(自定义用几次多项式),返回相应的参数,然后用polyval生成拟合后的数据点,下面的例子中我们对抛物线y=3x2+6x+5进行拟合。 x = -<span style="color: #:<span style="color: #.1:<span style="color: #;
y = <span style="color: #*x.^<span style="color: #+<span style="color: #*x + <span style="color: # + randn(size(x));
p = polyfit(x,y,<span style="color: #);
yy = polyval(p,x);
plot(x,y,'.');
plot(x,yy,'r','LineWidth',<span style="color: #)
polyfit(x,y,2)中x表示自变量,y表示因变量,2表示用二次曲线(抛物线)进行拟合,得到的p其实是对应的参数估计值,yy为拟合数据点。另外在实验中还加了一个随机噪声。结果如图:
2 高斯函数的曲线拟合
高斯曲线也是很常要拟合的曲线,这里介绍一种直接用代码使用cftool拟合工具的方法,这种方法可以对许多自定义的函数进行拟合(例如用来做多项式拟合,但是这种方法要麻烦很多,远没有前一种方法多项式拟合方便)。下面的是一个简单的例子,其中还可以进行更复杂的设置,具体请help fit和fittype.
f = fittype('a*exp(-((x-b)/c)^2)');
x = -<span style="color: #:<span style="color: #.2:<span style="color: #;
y = <span style="color: #*exp(-((x)/<span style="color: #).^<span style="color: #)+randn(size(x))*0.1;
plot(x,y,'.')
[cfun,gof] = fit(x(:),y(:),f);
yy = cfun.a*exp(-((x-cfun.b)/cfun.c).^<span style="color: #);
plot(x,yy,'r','LineWidth',<span style="color: #);
结果如下图:
此外,高斯曲线的拟合也可以通过转化为多项式拟合的方法实现,先将被拟合数据y取对数,然后用多项式拟合求出对应的参数。代码如下:
x = -<span style="color: #:<span style="color: #.2:<span style="color: #;
y = <span style="color: #*exp(-((x)/<span style="color: #).^<span style="color: #);
lny = log(y);
p = polyfit(x,lny,<span style="color: #);
gauss.c = sqrt(-<span style="color: #/p(<span style="color: #));
gauss.b = -p(<span style="color: #)/<span style="color: #/p(<span style="color: #);
gauss.a = exp(p(<span style="color: #)-p(<span style="color: #)*gauss.b^<span style="color: #);
yy = gauss.a*exp(-((x-gauss.b)/gauss.c).^<span style="color: #);
plot(x,y,'.');
plot(x,yy,'r','LineWidth',<span style="color: #)
结果如图所示,但是这种方法似乎只在没有噪声干扰时效果较好,如果存在噪声的干扰的话,那么这个估计不是最佳的(因为对数运算使不同区间的噪声影响不同),右图为加了噪声之后的情况.
&&&&&&&&&&&&&&&
阅读(...) 评论()请教matlab的解带参数的线性方程的方法欲求sqrt(x/a/b)/tan(e*sqrt(x/a/b))+sqrt(x/c/d)/tan(f*sqrt(x/c/d))=0的解其中a,b,c,d,e,f为参数想定义一个函数,只要调用它就可以求得解我用z=solve(sqrt(x/a/b)/tan(e*sqrt(x/a/_百度作业帮
请教matlab的解带参数的线性方程的方法欲求sqrt(x/a/b)/tan(e*sqrt(x/a/b))+sqrt(x/c/d)/tan(f*sqrt(x/c/d))=0的解其中a,b,c,d,e,f为参数想定义一个函数,只要调用它就可以求得解我用z=solve(sqrt(x/a/b)/tan(e*sqrt(x/a/
请教matlab的解带参数的线性方程的方法欲求sqrt(x/a/b)/tan(e*sqrt(x/a/b))+sqrt(x/c/d)/tan(f*sqrt(x/c/d))=0的解其中a,b,c,d,e,f为参数想定义一个函数,只要调用它就可以求得解我用z=solve(sqrt(x/a/b)/tan(e*sqrt(x/a/b))+sqrt(x/c/d)/tan(f*sqrt(x/c/d)))方法结果是零想不通高手指教,急!先谢谢化学工程的回答是不是说解不出来rootof指方程的根的意思那matlab不是和没说一样还有其他解法吗我定义了这么一个函数fc.mfunction z=f(a,b,c,d,e,f)syms xz=fzero(sqrt(x/a/b)/tan(e*sqrt(x/a/b))+sqrt(x/c/d)/tan(f*sqrt(x/c/d)),2000,[],a,b,c,d,e,f)end在command窗口定义 a=2.1e6 b=12.57 c=2.1e6 d=86.44 e=2254.5 f=2320.5然后调用fc(a,b,c,d,e,f)提示错误怎么办有没有可能将fc和func写成一个函数,因为我要在vb里面调用
不是一般的非线性啊,我试了试,只好调用maple了。clearsyms x a b c d e ffx='sqrt(x/a/b)/tan(e*sqrt(x/a/b))+sqrt(x/c/d)/tan(f*sqrt(x/c/d))=0'z=maple('solve',fx,'x')运行结果:fx =sqrt(x/a/b)/tan(e*sqrt(x/a/b))+sqrt(x/c/d)/tan(f*sqrt(x/c/d))=0z=RootOf(tan(_Z)*c*d-(c*d*a*b)^(1/2)*tan(e*(_Z^2/f^2*c*d/a/b)^(1/2)))^2/f^2*c*d, RootOf(tan(_Z)*c*d+(c*d*a*b)^(1/2)*tan(e*(_Z^2/f^2*c*d/a/b)^(1/2)))^2/f^2*c*d, 0你知道RootOf和*_Z吗?见/question/2558360.html补充:fzero的函数调用格式看help,我把它调试好了,x=19.7264说明了尽管用maple得到了无用的解,如果能给出abcdef的具体值,还是可解的。function fcclear x0=1; %初值x = fzero(@func,x0) function z=func(x) a=2.1e6;b=12.57;c=2.1e6;d=86.44;e=2254.5;f=2320.5 ; z=sqrt(x/a/b)/tan(e*sqrt(x/a/b))+sqrt(x/c/d)/tan(f*sqrt(x/c/d));运行结果:x =苹果/安卓/wp
苹果/安卓/wp
积分 505, 距离下一级还需 295 积分
权限: 自定义头衔, 签名中使用图片
道具: 彩虹炫, 雷达卡, 热点灯, 雷鸣之声, 涂鸦板, 金钱卡, 显身卡, 匿名卡, 抢沙发下一级可获得
权限: 隐身
购买后可立即获得
权限: 隐身
道具: 金钱卡, 雷鸣之声, 彩虹炫, 雷达卡, 涂鸦板, 热点灯
开心签到天数: 89 天连续签到: 4 天[LV.6]常住居民II
MATLAB软件的系统组成桌面工具和开发环境数学函数库&#61656;MATLAB编程语言&#61656;图形可视化&#61656;外部接口&#61656;Simulink&#61656;并行计算数学与优化&#61656;统计与数据分析&#61656;控制系统设计与分析&#61656;信号处理与通信&#61656;图像处理&#61656;测试&测量&#61656;计算生物计算金融&#61656;应用发布&#61656;应用发布目标&#61656;数据库连接和报告Simulink的产品构成定点建模&#61656;基于事件的建模&#61656;物理建模&#61656;仿真图形化&#61656;控制系统设计与分析&#61656;信号处理与通信&#61656;代码生成&#61656;快速原型和硬件再回路仿真&#61656;验证、确认和测试&#61656;生成报告MATLAB工作界面布局
23:20:17 上传
初识MATLAB命令
23:20:27 上传
&& (-913)*80)/sqrt(64) ans =
MATLAB命令窗口中常用的快捷键方向键↑ 调出历史命令中的前一个命令方向键↓ 调出历史命令中的后一个命令Tab键输入命令的前几个字符,然后按Tab键,会弹出前面包含这几个字符的所有命令,方便查找所需命令Ctrl+C 中断程序的运行,用于耗时过长程序的紧急中断利用diary和diary off命令来创建“日志”来记录历史命令&& diary test_diary.txt&& x=1 x = & & 1 && y=[1,2,3] y = & & 1& &&&2& &&&3 && diary off
23:20:37 上传
MATLAB搜索路径机制和搜索顺序
检查MATLAB内存,判断是否为变量或常量;
检查是否为MATLAB 的内部函数;
在当前目录中搜索是否有这样的M文件存在;
在MATLAB搜索路径的其他目录中搜索是否有这样的M文件存在。
工作空间浏览器查询和编辑已定义变量&#8226;通过右键菜单进行编辑或绘图等相关操作
23:20:47 上传
程序编辑窗口编辑M文件将M代码保存成扩展名为.m的文件,称之为M文件。M文件通常在程序编辑窗口(或称脚本编辑窗口)中编写,也可在记事本、写字板等文本编辑工具中编写,只需保存成M文件即可。
程序编辑窗口中常用的快捷键快捷键说明Tab键或Ctrl+] 增加缩进(对多行有效) Ctrl+[ 减少缩进(对多行有效) Ctrl+I 自动缩进(即自动排版,对多行有效) Ctrl+R 添加注释(对多行有效) Ctrl+T 去掉注释(对多行有效) F12键设置或清除断点F5键运行程序变量的定义与数据类型1.变量命名规则可由任意的字母、数字或下划线组成,但必须以字母打头;变量名区分字母大小写;理论上来说MATLAB中的变量名可以是任意长度,但实际上只有前N个字符是有效的,这里的N是namelengthmax函数的返回值,它与MATLAB版本有关,通常N=632.赋值语句&& x=1 x = & & 1 && y=1+2+sqrt(9) y = & & 6 && z='hello world' z = hello worldMATLAB中的特殊函数或常量列表
23:22:41 上传
清除变量和恢复内部函数&& pi ans = & &3.1416 && pi=1 pi = & & 1 && clear pi&& pi ans = 3.1416MATLAB中的关键字break、case、catch、classdef,continue、else、elseif,end、for、function、global、if, otherwise、parfor、persistent, return, spmd, switch, try, while数据类型
23:22:43 上传
23:22:44 上传
数据输出格式
23:22:47 上传
23:23:00 上传
23:23:10 上传
&& x=[1 -1.65 2.2 -3.1] x = & &1.0000& &-1.6500& & 2.2000&&-3.1000 && y=abs(x) y = & &1.0000& & 1.6500& & 2.2000& &3.1000 && y2=sin(x) y2 = & &0.8415& &-0.9969& & 0.8085&&-0.0416 && y3=round(x) y3 = & & 1& & -2& &&&2& &-3 && y4=floor(x) y4 = & & 1& & -2& &&&2& &-4 && y5=ceil(x) y5 = & & 1& & -1& &&&3& &-3数组运算x=[X1,x2,x3,…]% 定义行向量x=[X1;x2;x3;…]% 定义列向量&& x=[1,0,2,-3 5] x = & & 1& &&&0& &&&2& &-3& &&&5&& y=[-1;10;3;-2;7] y = & &-1& &10& & 3& &-2& & 7&& y=[-1 10 3 -2 7]' y = & &-1& &10& & 3& &-2& & 7规模化定义向量通过冒号运算符构造等间隔向量。x=初值:步长:终值&& x=1:2:10 x = & & 1& &&&3& &&&5& & 7& &&&9调用linspace函数生成等间隔向量。x = linspace(初值,终值,向量长度)&& x=linspace(1,10,10) x = & & 1& &&&2& &&&3& & 4& &&&5& &&&6& & 7& &&&8& &&&9& &10定义矩阵&& a=[1,2,3;4,5,6;7,8 9] a = & & 1& &&&2& &&&3& & 4& &&&5& &&&6& & 7& &&&8& &&&9矩阵与向量的互相转换&& A=a(:) A = & & 1& & 4& & 7& & 2& & 5& & 8& & 3& & 6& & 9A = reshape(x, [m, n])%将向量x转为m行n列的矩阵&& x=1:18;&& A=reshape(x,[3,6]) A = & & 1& &&&4& &&&7& &10& & 13& & 16& & 2& &&&5& &&&8& &11& & 14& & 17& & 3& &&&6& &&&9& &12& & 15& & 18
支持楼主:、
购买后,论坛将把您花费的资金全部奖励给楼主,以表示您对TA发好贴的支持
载入中......
[img]http://pic./forum//184005lbzbae6212af7azk.
请问楼主主要通过什么方式学习matlab,视频?书籍?网上资源? 小白新手,不知道如何入门,求指教!十分感谢!!!!
guopeng 发表于
请问楼主主要通过什么方式学习matlab,视频?书籍?网上资源? 小白新手,不知道如何入门,求指教!十分感谢 ...我也一样,之前根本就没有接触过,现在才学习。你现在是通过什么方法学呢?英文翻译又不是特别好,看从官网下载的教程很专业名词都不懂是什么意思,很迷茫。
论坛好贴推荐
&nbsp&nbsp|
&nbsp&nbsp|
&nbsp&nbsp|
&nbsp&nbsp|
&nbsp&nbsp|
&nbsp&nbsp|
为做大做强论坛,本站接受风险投资商咨询,请联系(010-)
邮箱:service@pinggu.org
合作咨询电话:(010)
广告合作电话:(刘老师)
投诉电话:(010)
不良信息处理电话:(010)
京ICP证090565号
京公网安备号
论坛法律顾问:王进律师推荐这篇日记的豆列
······
&(5人关注)

我要回帖

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

 

随机推荐