For loop and if statement in MATLAB
2 次查看(过去 30 天)
显示 更早的评论
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 个评论
Adam
2018-4-12
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.
回答(2 个)
Jim Riggs
2018-4-13
编辑:Jim Riggs
2018-4-13
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 个评论
Samantha Cepeda
2018-4-14
2 个评论
Jim Riggs
2018-4-14
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)".
Jim Riggs
2018-4-14
编辑:Jim Riggs
2018-4-14
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.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Graphics Object Programming 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!