Info
この質問は閉じられています。 編集または回答するには再度開いてください。
How to impliment this without loop?
1 回表示 (過去 30 日間)
古いコメントを表示
I need to take the rate of change of a variable and for the first value there is not a previous value to take.For the initial i assumed that the rate of change is zero as the simulation is so long that it will not affect the results.So i tried something like this:
obj.Value(indexT,BladeN) = function(X,Y);
PreviousValue = obj.Value(indexT-1,BladeN)*(index~=1)+(index==1)*obj.Value(indexT,BladeN);
rate = (obj.Value(indexT,BladeN) - PreviousValue)/timestep
Ofcurse its not running cause there is no zero index.I know it can be done by a loop but I would prefer something more elegant.Any idea?
0 件のコメント
回答 (1 件)
Henrik
2014 年 11 月 27 日
You example is a bit confusing to me, there seems to be several unnecessary complications, e.g. using fields.
Anyway, here's what I would do:
rate=(obj.Value(2:end,BladeN)-obj.Value(1:end-1,BladeN))/timestep;
I'd even guess that this will work, depending on exactly what you need.
rate=(obj.Value(2:end,:)-obj.Value(1:end-1,:))/timestep;
If you want rate to be the same size as obj.Value, you could also do
rate=zeros(size(obj.Value));
rate(2:end,:)=(obj.Value(2:end,:)-obj.Value(1:end-1,:))/timestep;
I hope this can be used?
You can also look up diff, that might be helpful.
0 件のコメント
この質問は閉じられています。
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!