Making the variable zero before going to the called function
2 次查看(过去 30 天)
显示 更早的评论
I have one complex problem, for me it is very complex.
I need to make a variable zero inside the if statements. but here if statements is a called function which contains three input arguments(Area, width, Diameter).
code like this:
% A is ara matrix
% D is diamter matrix
% W is width matrix.
Function L = Area_1(A, W,D)
if W == 0
L = .........
else
L = ......
end
end
Function L_A = Leitwert
[A,W,D] = Matrix_1;
% width matrix is like this W = [10 20 30 0];
% Diameter matrix is like this D = [ 5 5 5 0];
for i = 1:size(A,1)
for j = 1:size(A,2)
if M_1 == metal && M_2 == metal
L_A = Area_1(a,w,d);
elseif M_1 == metal && M_2 == air
L_B = .......
end
end
end
% The problem is how to make width zero inside the if statements even though it is a value.
For an example: i = 1, j = 1;
width = 10 Diameter = 5;
L_A(1,1) = ........ % (here second equation is sloved in the function Area_1 to give L_A)
Now I want L_A(1,2) now
but L_A (1,2) should be from the first equation of the function Area_1 even though Width(W) is a value.
Why? I can't make W(1,2) = 0 since L_B needs that width value if the condition is metal and air..
If the question is not clear still, kindly ask!
any suggestions and answered will be most welcomed!
3 个评论
surendra kumar Aralapura mariyappa
2019-6-11
编辑:surendra kumar Aralapura mariyappa
2019-6-11
Jan
2019-6-11
I've formatted the text as text and the Matlab code as code to improve the readability. If you write "function" with lower case characters and apply a standard indentation (press Ctrl-a Ctrl-i in the editor), the code would be even nicer.
"when the i = material and j = air, L_B(1,4) or L_B(3,4) or L_B(2,4) slover goes to L_B = Area_1 ()" - I do not understand, what this means. L_B is set by L_B = Area_1, which replies a scalar. Then there is no L_B(1,4) or L_B(3, 4). I do not understand which "solver" is "going" to where.
Sorry, I do not get an idea of what you try to do.
回答(1 个)
James Browne
2019-6-12
编辑:James Browne
2019-6-12
Greetings,
I think I understand what your problem is and I think I may have a solution for you. Perhaps you should use a different variable in the function Area_1 to decide which equation to use, call it "eq" or something (name does not really matter, obviously). Then in the function Area_1 would look something like:
function L = Area_1(a, w,d)
% a = area
% w = width
% d = diameter
if eq == 0
L = a * d % when material and air are in series
else
L = a*d*w % when material and air are in parallel
end
Then all you have to do is set the variable "eq" to zero when it is appropriate to use equation 1 and set "eq" to 1 (or some other value other than zero) when it is appropriate to use equation 2. I do not really see a reason to use the variable "w" in the if statement which decides which equation to use, but maybe I am missing something?
If you do need to use "w" to decide which equation to use, you can always store the current value of "w" in a different variable, say "x", for example, then set "w" to zero to select the correct equation in the Area_1 function, once the Area_1 function completes its task, use the value stored in "x" to reset the current value of "w" to its original value. I can't quite tell from your code when materials are in seriese or parallel so I can't write the logic staement for you but if you wanted to be able to set "w" to zero and then reset it, it could be done in a way similar to the following code:
if ('logic statement for "w" needs to be zero')
x = w(i);
w(i) = 0;
L_A = Area_2( A(i,j),W(i),d(i));
w(i) = x;
end
I hope this at least points you in the right direction~
0 个评论
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!