Using a Variable between different functions
9 次查看(过去 30 天)
显示 更早的评论
Hello,
I have this two function. evAlice and evBob were defined in CHSH_ but I need to access themin basis function. But I could not know how can I access to evAlice and evBob in basis fucntion.
function [coin, I] = CHSH_(sigma_x,sigma_z)
ev1_of_alice = sigma_x;
ev2_of_alice = sigma_z;
ev1_of_bob = sigma_x+sigma_z;
ev2_of_bob = sigma_x-sigma_z;
evAlice=[sigma_x,sigma_z];
evBob=[sigma_x+sigma_z,sigma_x-sigma_z];
... %function is too long so I just put the relevant part
end
function [basis_mat] = basis(measurement_setting)
% Choose the correct basis depending on the
% measurement setting. If you change the observables,
% these are obtained by diagonalization
switch measurement_setting
case evAlice(0)
basis_mat = [1, 1; 1,-1]/sqrt(2);
case evAlice(1)
basis_mat = [1, 0; 0, 1];
case evBob(0)
basis_mat = [ 1+sqrt(2), 1-sqrt(2); 1, 1];
case evBob(1)
basis_mat = [-1-sqrt(2),-1+sqrt(2); 1, 1];
end
end
0 个评论
采纳的回答
the cyclist
2020-6-21
编辑:the cyclist
2020-6-21
You can pass them out of the first function:
function [coin, I, evAlice, evBob] = CHSH_(sigma_x,sigma_z)
and into the second one by calling it like this
basis(measurement_setting, evAlice, evBob)
and defining it as
function [basis_mat] = basis(measurement_setting, evAlice, evBob)
Alternatively, you could define those variables as global in scope, in both functions, but that is generally a bad idea.
4 个评论
Stephen23
2020-6-22
编辑:Stephen23
2020-6-22
"Instad of that can I use global variable or is this better ?"
Global variables: slower, more buggy, harder to debug, obfuscate the code intent.
Input/output variables: faster, easier to debug, recommended by the MATLAB documentation as "best practice":
If you have lots of arguments then put them into a structure and pass that.
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Startup and Shutdown 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!