EDA365电子论坛网
标题:
在自定义函数中使用global变量后函数function的关键字无效
[打印本页]
作者:
nkkopd
时间:
2021-2-5 13:39
标题:
在自定义函数中使用global变量后函数function的关键字无效
我的计算中使用了最小二乘法拟合函数,因此自定义了一个函数,为了能把主函数中定义的变量直接拿过来在自定义函数中使用我就使用了global全局变量,第一次使用global变量,为什么在自定义函数中一使用global,就显示“此处使用的FUNCTION关键字无效”,麻烦大家帮忙看看
8 k3 n0 ^# V, X P/ n0 s+ ~6 @
%主程序部分
6 p7 C0 g) M+ L& j' a
clc;close all;clear all;
0 s. t3 `* \% W6 W+ j* L) w
global wavelength_0 intensity OPD;% unit: m
$ Y3 v! C/ C5 f3 l) i
wavelength_0=532*10^-9;
3 P" l% V$ @' x/ ^5 r. ~0 I- k6 V
data=xlsread('F:\扫描结果\aa.xlsx');%读数据
- d+ N7 k1 {1 Q: n6 H! d; }
intensity = data(:,1);
( e: W6 x0 F2 I; J- z8 K) a
intensity = intensity'./max(intensity);
& d0 {! G, @. X. e* |
intensity_number = length(intensity);
/ I/ C+ E* N) ~' b4 R
OPD= linspace(0,intensity_number./30,intensity_number);
* n! ~* |+ G! N' T# h* y9 d
figure(1)
1 B' v9 \4 g0 B$ c2 e- t; x
plot(OPD,intensity);
( U, @8 U& `* k9 R4 b
a0 = [0.133,0,2]; %初始估计值
. \$ d/ T/ K5 W3 I
a = lsqcurvefit(@myfun,a0,OPD,intensity);
2 O$ v: z( G$ r' _9 u1 K
F = a(1)+a(2)*cos(2*pi.*OPD./wavelength_0+a(3));
) I" D9 X$ X6 c8 u
coherence = (max(newtype)-min(newtype))./(max(newtype)+min(newtype));
0 C$ i3 \2 C' o: ?1 r: u% Z5 Z/ O, E
figure(2)
# k( j( X/ m3 c
plot(OPD,coherence);
9 b- s0 X$ v+ f3 r
) v, k9 ]- y, x& w% T/ r
9 Y" A1 Q1 p5 Q/ I
%下面是我新建了一个.m文件的自定义函数
, _0 r9 B" z( K! ?
global wavelength_0 OPD;
. w# i, G! A% ^5 M! T9 Q O
function F = myfun(a,OPD)%就是这里出问题的
) Z/ R5 e6 i) i9 R
F = a(1)+a(2)*cos(2*pi.*OPD./wavelength_0+a(3));
: M* y. v. _ i) u% R
end
6 @0 g' k' M! M' Y2 |) i1 S
' w$ ~2 c$ |6 }/ L. Z
# V) P- U, T% o W8 D0 L
作者:
小白的白
时间:
2021-2-5 14:11
帮你顶一下
作者:
zzz.dan
时间:
2021-2-5 17:32
顺序有问题,试试
# u7 J0 d4 a* U, }1 m1 g
%下面是我新建了一个.m文件的自定义函数
1 H1 K" H1 y6 Z, Z
7 S- q/ O& x" |% d
function F = myfun(a,OPD)%就是这里出问题的
0 w& C. m. V$ d, s$ T
global wavelength_0
/ e& o( K6 ?2 ]" k8 ]
F = a(1)+a(2)*cos(2*pi.*OPD./wavelength_0+a(3));
- Q4 m! S" ^8 u# p" O( f& x
end
作者:
cichishia
时间:
2021-2-5 17:39
来学习一下
欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/)
Powered by Discuz! X3.2