| 查看: 3469 | 回复: 12 | |||
| 当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖 | |||
[求助]
matlab使用自定义函数文件拟合出现错误已有1人参与
|
|||
|
代码如下,x,y是想要拟合的曲线对应的x,y值;L1,L2是想要拟合的参数; 下面就是一系列的矩阵计算,通过x求得y 使用ft=fittype('c(x,,L1,L2)'); 出现错误: 错误使用 fittype/testCustomModelEvaluation (line 12) Expression c(x,L1,L2) is not a valid MATLAB expression, has non-scalar coefficients, or cannot be evaluated: Error in fittype expression ==> c(x,L1,L2) ??? 索引超出矩阵维度。 出错 fittype>iCreateFittype (line 371) testCustomModelEvaluation( obj ); 出错 fittype (line 328) obj = iCreateFittype( obj, varargin{:} ); 原因: 错误使用 fittype/evaluate (line 102) Error in fittype expression ==> c(x,L1,L2) ??? 索引超出矩阵维度。 怎么解决这个问题?还有其他拟合办法吗?求助好心的坛友~~~~~~~~~~~~~~~~~~~ ![]() ![]() function [ y ] = c(x,L1,L2) %UNTITLED2 此处显示有关此函数的摘要 % 此处显示详细说明 m=20; % number of section n1 = 2.8924; %AlAs n2 = 3.3702; %GaAS na=1; ns=n2; ra=(na-n2)/(na+n2); r=(n2-n1)/(n2+n1); ta=sqrt(1-ra^2); t=sqrt(1-r^2); y=zeros(1,2500); ab1=0; ab2=0; for kl=1:2500 beta1 = 2*pi*n1/x(kl)-1i*ab1/2; beta2 = 2*pi*n2/x(kl)-1i*ab2/2; T11_a = exp(1i*beta2*L2)/ta; T12_a = ra*exp(-1i*beta2*L2)/ta; T21_a = ra*exp(1i*beta2*L2)/ta; T22_a = exp(-1i*beta2*L2)/ta; T=[T11_a,T12_a;T21_a,T22_a]; for k=1:m-1 T11_n2 = exp(1i*beta1*L1)/t; T12_n2 = r*exp(-1i*beta1*L1)/t; T21_n2 = r*exp(1i*beta1*L1)/t; T22_n2 = exp(-1i*beta1*L1)/t; T_n2=[T11_n2,T12_n2;T21_n2,T22_n2]; T=T*T_n2; T11_n1 = exp(1i*beta2*L2)/t; T12_n1 = -r*exp(-1i*beta2*L2)/t; T21_n1 = -r*exp(1i*beta2*L2)/t; T22_n1 = exp(-1i*beta2*L2)/t; T_n1=[T11_n1,T12_n1;T21_n1,T22_n1]; T=T*T_n1; end T11_n2 = exp(1i*beta1*L1)/t; T12_n2 = r*exp(-1i*beta1*L1)/t; T21_n2 = r*exp(1i*beta1*L1)/t; T22_n2 = exp(-1i*beta1*L1)/t; T_n2=[T11_n2,T12_n2;T21_n2,T22_n2]; T=T*T_n2; T_12=[1/t,-r/t;-r/t,1/t]; % from n1 to n2, just cross the interface T = T*T_12; T11_c = exp(1i*beta2*2*L2); T12_c = 0; T21_c = 0; T22_c = exp(-1i*beta2*2*L2); T_c = [T11_c,T12_c;T21_c,T22_c]; % n2 cavity T = T*T_c; for k=(1:m) T11_n2 = exp(1i*beta1*L1)/t; T12_n2 = r*exp(-1i*beta1*L1)/t; T21_n2 = r*exp(1i*beta1*L1)/t; T22_n2 = exp(-1i*beta1*L1)/t; T_n2=[T11_n2,T12_n2;T21_n2,T22_n2]; T=T*T_n2; T11_n1 = exp(1i*beta2*L2)/t; T12_n1 = -r*exp(-1i*beta2*L2)/t; T21_n1 = -r*exp(1i*beta2*L2)/t; T22_n1 = exp(-1i*beta2*L2)/t; T_n1=[T11_n1,T12_n1;T21_n1,T22_n1]; T=T*T_n1; end T11_n2 = exp(1i*beta1*L1)/t; T12_n2 = r*exp(-1i*beta1*L1)/t; T21_n2 = r*exp(1i*beta1*L1)/t; T22_n2 = exp(-1i*beta1*L1)/t; T_n2=[T11_n2,T12_n2;T21_n2,T22_n2]; T=T*T_n2; T_12=[1/t,-r/t;-r/t,1/t]; T = T*T_12; T11_c = exp(1i*beta2*9*L2); T12_c = 0; T21_c = 0; T22_c = exp(-1i*beta2*9*L2); T_c = [T11_c,T12_c;T21_c,T22_c]; % n2 cavity T = T*T_c; T11_n2 = exp(1i*beta1*L1)/t; T12_n2 = r*exp(-1i*beta1*L1)/t; T21_n2 = r*exp(1i*beta1*L1)/t; T22_n2 = exp(-1i*beta1*L1)/t; T_n2=[T11_n2,T12_n2;T21_n2,T22_n2]; T=T*T_n2; rs1=(n1-ns)/(ns+n1); ts1=sqrt(1-rs1^2); T11_s = 1/ts1; % n1 to substrate T12_s = rs1/ts1; T21_s = rs1/ts1; T22_s = 1/ts1; T_s = [T11_s,T12_s;T21_s,T22_s]; T=T*T_s; y(kl) = (abs(T(2,1)/T(1,1)))^2; end end ![]() ![]() ![]() |
» 收录本帖的淘帖专辑推荐
学习方法 |
» 猜你喜欢
求取一些关于纳米材料和纳米技术相关的英文PPT。
已经有0人回复
【复旦大学】二维材料方向招收2026年博士研究生1名
已经有0人回复
物理学I论文润色/翻译怎么收费?
已经有129人回复
北京纳米能源与系统研究所 王中林院士/曹南颖研究员课题组2026级硕/博/博后招生
已经有10人回复
荷兰Utrecht University超快太赫兹光谱王海教授课题招收2026 CSC博士生
已经有22人回复
反铁磁体中的磁性切换:两种不同的机制已成功可视化
已经有0人回复
26申博推荐:南京航空航天大学国际前沿科学研究院光学方向招收博士生!
已经有0人回复
求标准粉末衍射卡号 ICDD 01-076-1802
已经有0人回复
新西兰Robinson研究所招收全奖PhD
已经有0人回复
512095518
专家顾问 (正式写手)
-

专家经验: +52 - 应助: 118 (高中生)
- 金币: 7665.4
- 红花: 78
- 帖子: 712
- 在线: 186.1小时
- 虫号: 3195576
- 注册: 2014-05-10
- 性别: GG
- 专业: 大气环境与全球气候变化
- 管辖: 计算模拟

4楼2016-08-31 23:48:58
512095518
专家顾问 (正式写手)
-

专家经验: +52 - 应助: 118 (高中生)
- 金币: 7665.4
- 红花: 78
- 帖子: 712
- 在线: 186.1小时
- 虫号: 3195576
- 注册: 2014-05-10
- 性别: GG
- 专业: 大气环境与全球气候变化
- 管辖: 计算模拟

2楼2016-08-31 19:11:07
3楼2016-08-31 23:37:42
5楼2016-09-01 00:45:30














回复此楼