How to include a switch statement within a for loop?
5 次查看(过去 30 天)
显示 更早的评论
Hi, I am having to learn and apply for loops in my new job.
I have an equation which contains two variables each time, i.e. I have to compute at three different frequencies and at each of these frequencies there is a separate current. I have attached the code:
% Parameters
a_R = 0.0325;
a_T = 0.0325;
N_T = 164;
N_R = 10;
mu_0 = 4*pi*(10^-7);
f_Array = [10000,20000,40000];
w = 2*pi*f_Array; % Angular frequency
I = [2,1,0.5]; % Current
for i = 1:3
f = f_Array(i);
switch f
case 10000
I = 2;
case 20000
I = 1;
case 40000
I = 0.5;
end
K_R = ((mu_0^2)*(w(i)^2)*pi*N_T*N_R*(a_T^2)*(a_R^2)*I./(4*x_R_center));
end
Basically, the output I want is K_R at each frequency and respective curent, however the output just runs the first case and not the other two.
Any help would be greatly appreciated. Thanks.
1 个评论
Adam
2019-10-17
编辑:Adam
2019-10-17
At a glance,
K_R = ((mu_0^2)*(w(i)^2)*pi*N_T*N_R*(a_T^2)*(a_R^2)*I./(4*x_R_center));
should work on its own, removing the for loop. You have I in an array originally so that should give a vectorised answer of 3 values also (though I haven't checked carefully to see if there are any further e.g. .^ or .* missing to make it work on vector inputs).
If you really want to use a for loop then the switch doesn't make sense there either though.
Just use
I(i)
instead (though clearly you need some better variable names for readability!) and put the result into
K_R(i)
which you should pre-size before the for loop as e.g.
K_R = zeros( size( I ) );
采纳的回答
Andrei Bobrov
2019-10-17
编辑:Andrei Bobrov
2019-10-17
% Parameters
a_R = 0.0325;
a_T = 0.0325;
N_T = 164;
N_R = 10;
mu_0 = 4*pi*(10^-7);
f_Array = [10000,20000,40000];
w = 2*pi*f_Array; % Angular frequency
I = [2,1,0.5]'; % Current
K_R = mu_0^2*w.^2*pi*N_T*N_R*a_T^2*a_R^2.*I/(4*x_R_center);
If you use old MATLAB (R < 2016a), so last expresion:
K_R = mu_0^2*pi*N_T*N_R*a_T^2*a_R^2/(4*x_R_center)*bsxfun(@times,w.^2,I);
0 个评论
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Loops and Conditional Statements 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!