EDA365电子论坛网
标题:
最小二乘法拟合函数
[打印本页]
作者:
kekek
时间:
2021-2-1 16:33
标题:
最小二乘法拟合函数
我的计算中使用了最小二乘法拟合函数,因此自定义了一个函数,为了能把主函数中定义的变量直接拿过来在自定义函数中使用我就使用了global全局变量,第一次使用global变量,为什么在自定义函数中一使用global,就显示“此处使用的FUNCTION关键字无效”,求助
& M% R$ U9 w. C" ]: _
%主程序部分
! Q: l4 U3 t P$ W
clc;close all;clear all;
% [; W3 j1 x4 |; J
global wavelength_0 intensity OPD;% unit: m
) B! [- R6 [3 U
wavelength_0=532*10^-9;
/ m4 N& b3 {0 n& ^9 M2 [
data=xlsread('F:\扫描结果\aa.xlsx');%读数据
! L! I( e- ]( |
intensity = data(:,1);
2 \# q) ]- D* }$ L, i
intensity = intensity'./max(intensity);
: L) V4 _9 A) Y x% ?( w: `# z' z
intensity_number = length(intensity);
. b. E+ }8 P7 Q) v
OPD= linspace(0,intensity_number./30,intensity_number);
/ z5 k7 ~ @/ w3 }
figure(1)
/ H* z, W! {6 G
plot(OPD,intensity);
1 b {+ d; G; C% u6 t* R
a0 = [0.133,0,2]; %初始估计值
6 x6 N! H/ R. j$ c& p3 q3 \
a = lsqcurvefit(@myfun,a0,OPD,intensity);
5 c" U- ]8 V L3 S
F = a(1)+a(2)*cos(2*pi.*OPD./wavelength_0+a(3));
$ B. D/ J! H) u( ^9 `) {
coherence = (max(newtype)-min(newtype))./(max(newtype)+min(newtype));
& |. _' R" l# r
figure(2)
/ G4 u6 D* P$ h# E& x
plot(OPD,coherence);
& f/ U2 g. C3 \, k6 x) n% s
N$ V, h' J+ q0 Q, a9 k6 U
. G; k2 Q* q/ G0 a/ T, h8 a# U
%下面是我新建了一个.m文件的自定义函数
" ^! U% Z9 P9 s9 q/ X
global wavelength_0 OPD;
2 l: _) l3 A1 W5 S
function F = myfun(a,OPD)%就是这里出问题的
' {, h) }- V: X0 Z
F = a(1)+a(2)*cos(2*pi.*OPD./wavelength_0+a(3));
+ D7 i# S, N. ^- o
end
; `- `7 z% K7 H% |
) s4 x1 {" w8 r7 N6 Q
A e. X/ R% U* s
作者:
Uifhjvv
时间:
2021-2-1 17:03
顺序有问题
% L! b! o9 N) v4 u# T) n! p, `* n
%下面是我新建了一个.m文件的自定义函数
% E( N9 K) C" \7 S
+ U9 C& h+ H7 l
function F = myfun(a,OPD)%就是这里出问题的
: F9 j! f1 {" }" K/ o
global wavelength_0
% f9 J N0 n! _
F = a(1)+a(2)*cos(2*pi.*OPD./wavelength_0+a(3));
& V7 Z# h; K+ g* F/ `
end
作者:
zaiyiaaaa
时间:
2021-2-2 11:20
来学习一下
作者:
小白的白
时间:
2021-2-2 11:23
欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/)
Powered by Discuz! X3.2