Program does 5 calculations instead of one.
2 ビュー (過去 30 日間)
古いコメントを表示
Hi Guys! I have written a simple script, that's supposed to do some loop calculations. Here's the script:
a=3;
initialVelocity = 38.8889;
brakeMass = 14;
velocity = (initialVelocity:a:54.72);
coolingCoef = (85+0.0017*velocity.^2);
A=0.4;
time=(velocity-initialVelocity)/a;
temperature = zeros(1,6);
temperature(1)=900;
for x=2:length(temperature)
dissipatedHeat = coolingCoef.*(temperature(x-1))
energy = dissipatedHeat.*time;
specificHeatCapacity = 457+0.14219*temperature(x-1);
temperatureDrop = energy/(brakeMass*specificHeatCapacity);
temperature(x)=temperature(x-1)-temperatureDrop(x);
end
When I run the proram it gives me series of answers. Like this:
dissipatedHeat =
1.0e+04 *
7.8814 7.9185 7.9583 8.0009 8.0462 8.0943
dissipatedHeat =
1.0e+04 *
7.7967 7.8334 7.8728 7.9149 7.9598 8.0074
dissipatedHeat =
1.0e+04 *
7.6280 7.6638 7.7024 7.7436 7.7875 7.8340
dissipatedHeat =
1.0e+04 *
7.3778 7.4125 7.4498 7.4896 7.5321 7.5771
dissipatedHeat =
1.0e+04 *
7.0511 7.0842 7.1199 7.1580 7.1985 7.2416
However, I just want the script to multiply value by value. So say on the first iteration it multiplies frst values from the vector and gives me the answer of temperature for second iteration. It the multiplies 2nd value from both matrices and so on. I think Matlab multiplies every member in a matrix by every member in other matrix. I tried adding a do before one of the values, but it does not help. Any ideas how to fix it? Think I'm just missing a small point somewhere,but can't find it. Thank you!
0 件のコメント
採用された回答
Jan
2012 年 7 月 20 日
編集済み: Jan
2012 年 7 月 20 日
Perhaps you want:
...
dissipatedHeat = coolingCoef(x-1) * (temperature(x-1))
...
energy = dissipatedHeat * time(x); % or time(x-1)?
3 件のコメント
bym
2012 年 7 月 21 日
I think you should consider Jan's answer more carefully.
coolingCoef
time
are vectors.
Jan
2012 年 7 月 21 日
編集済み: Jan
2012 年 7 月 21 日
velocity is a vector. Therefore coolingCoef and time are vectors. Therefore dissipatedHeat is a vector. Did you try my suggestion, which let you access one element per loop iteration?
Use the debugger and step through you code line by line to find out, what's going on.
その他の回答 (3 件)
Kokalz
2012 年 7 月 21 日
3 件のコメント
per isakson
2012 年 7 月 21 日
編集済み: per isakson
2012 年 7 月 21 日
Meta: Comment on comment
It is difficult to read and understand your comment and that is partly because it is not formatted. Now, I have copy&pasted to an editor formatted somewhat and printed.
Compare:
So it goes like this:
- I assign the first value for temperature
- get values for dissipated heat energy and so on, to get the second value of temperature.
- And then it starts all over to get the value of 3rd temperature.
per isakson
2012 年 7 月 22 日
編集済み: per isakson
2012 年 7 月 22 日
Firstly, the code appears to be a strange blend of loop and vectorized (as Jan says).
Secondly, a short description of the underlying physics would help. Is it about a brake (of a moving vehicle), which heats and losses heat as the velocity of the vehicle changes?
Thirdly, I think it would be helpful to indicate physical units in comments to appropriate assignments.
Time out for now. I'll have a look at your code in my next break.
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!