For loop and if statement in MATLAB
Mostrar comentarios más antiguos


Please, I need a quick help with this problem. If you can guide me on how I can use a "for loop" and "if statement " to solve the problem I would really really appreciate it. Even if you just try to let me know how to use 'if and for' in anything similar. Thank you
8 comentarios
Adam
el 10 de Abr. de 2018
Have you tried the obvious
doc if
doc for
to look at the help?!
Guillaume
el 10 de Abr. de 2018
The question, apart from the typos, is actually very well written since it starts by telling you to solve the most crucial step first:
Create a flowchart
Have you done that yet? Once you've done that the actual usage of if and for is trivially solved using the doc as Adam says.
Note that you won't get much pity from us. The whole purpose of homework and assignments is to prove that you have the skill to solve such problems yourself, not the skill to go and ask somebody else to do it.
Samantha Cepeda
el 10 de Abr. de 2018
David Fletcher
el 10 de Abr. de 2018
If it's not homework, I wouldn't worry too much about doing a formal flowchart. Just make a list of things that you need to do and calculate in some sort of chronological order and take it from there.
I'll give you another hint.
Since you have an orderly sequence of conditions to evaluate, this would be the FOR loop (0.0, 0.1, 0.2, ... etc). These are fractions of m. (The problem statement even indicates "step=0.1m") But you know that if you get to 1.0m you will have gone too far, so inside the FOR loop, use the IF statement to determine when you have gone far enough and exit the FOR loop.
Samantha Cepeda
el 11 de Abr. de 2018
Adam
el 12 de Abr. de 2018
doc
is just what you can type on command line, followed by whatever you want, to open the help for that particular function. You can equally well open the help yourself and type 'for' or 'if' in the search field, it's just easier to type
doc for
and go straight there. This is always better than using the online help too (unless you always use the most up to date version of Matlab in which case they are equally good) as the online help is always for the latest version. For something as basic as 'for' or 'if' I doubt the help changes much between versions, but some functions you find online may not exist for you if you are using an older version of the software.
Samantha Cepeda
el 13 de Abr. de 2018
Respuestas (2)
First of all, when calculating the masses you have to MULTIPLY the volume by the density.
You should always verify this using dimensional analysis. For example: the calculation pi*rc^2*lc is the volume of the cylinder and has units of (m^3) if you divide m^3 by kg/m^3, that's the same as multiplying m^3 by m^3/kg and the units you end up with are m^6/kg. Now if you multiply m^3 by Kg/m^3 you end up with Kg, which is the correct unit for mass. so,
volume_cyl = (pi * rc^2 * lc); % cylinder volume in m^3
mass_cyl = (pi * rc^2 * lc)* rho; % cylinder mass in Kg
% (or)
mass_cyl = volume_cyl * rho; % Cylinder mass in Kg
Now, this cylinder volume and mass represents the cylinder without the hole, so it does not change, and therefore, this calculation can be placed outside the FOR loop.
The FOR loop is intended to vary hole size, so the loop index 'i' must be used to define the size of the hole, in this case it is the length of one side of the square hole. You are instructed to make the step size 0.1m, so this can be built into the loop. But, rather than use "i" as the loop index, you might just as well use the variable name for the hole width, "Wr". This gives you
for Wr = 0:.1:1 % start at 0, step by 0.1 up to 1
Inside the for loop, you calculate the mass of the hole and subtract it from the mass of the cylinder
mass_cyl = (pi * rc^2 * lc)* rho; % cylinder mass (Kg)
% put a print statement before the loop to show the problem variables that don't change
fprintf('lc=%f, rho=%f, mass_cyl=%f ...etc \n ',lc, rho, mass_cyl, ...etc)
for Wr = W0:Ws:rc % Wr starts at W0, steps by Ws up to rc
mass_hole = Wr^2*lc*rho; % mass of hole (Kg)
tmass_cyl = mass_cyl - mass_hole % mass of the cylinder with the hole in it (Kg)
% put a print statement inside the loop to see each loop calculation
fprintf('Wr=%f, mass_hole=%f, tmass_cyl=%f \n ',Wr, mass_hole, tmass_cyl)
end
11 comentarios
Samantha Cepeda
el 13 de Abr. de 2018
I just noticed that you made an error in the unit conversion of the density from g/cm^3 to Kg/m^3.
It goes like this:
2.7 g/cm^3 x (1 kg)/(1000g) x [(10cm /(1m)]^3
= 2.7 g/cm^3 x 1/1000 (g to Kg) x 1000/1 (per cm^3 to per m^3) = 2.7 Kg/m^3
so 2.7 g.cm^3 = 2.7 Kg/m^3
Samantha Cepeda
el 13 de Abr. de 2018
Samantha Cepeda
el 13 de Abr. de 2018
you can use a while loop, but to do that you have to include the conditional calculation inside the loop. For example
Wr = W0;
While Wr <= rc
...
...
Wr = Wr + Ws;
end
You see, you have to initialize Wr before the loop, then you have to change Wr inside the loop, or the loop will never end. This loop now will end when Wr is greater than rc.
As you can see, this is all accomplished in a single line in the FOR statement.
Jim Riggs
el 13 de Abr. de 2018
Also, if you do get stuck in an infinite loop, just press ctrl + C and it will stop execution.
Samantha Cepeda
el 13 de Abr. de 2018
Samantha Cepeda
el 14 de Abr. de 2018
Samantha Cepeda
el 14 de Abr. de 2018
Samantha Cepeda
el 14 de Abr. de 2018
2 comentarios
Jim Riggs
el 14 de Abr. de 2018
The first thing that I notice is that in your print statement you are printing "mass_h", but this is a vector. This means that each time the print statement is encountered, it is printing all of the mass_h values. What you want is "mass_h(i)".
One other observation: The statement (wr(i)).^2 is a matrix statement that indicates each element in the matrix is to be squared (that's what the dot "." is for). However, using the subscript (i) means it is only referencing one element (the ith element) so this is a scalar. This means that you don't need the "." and can simply write wr(i)^2 as this is performing a scalar operation.
Categorías
Más información sobre Loops and Conditional Statements en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!