simplyfing computations in arrays

2 ビュー (過去 30 日間)
Sara
Sara 2012 年 7 月 4 日
int = zeros(1,length(x));
for n = 3:length(x)
y1 = x(2:n) ;
t1 = n*dt - (2*dt:dt:n*dt) ;
y2 = x(1:n-1) ;
t2 = n*dt - (dt:dt:(n-1)*dt) ;
int(n) = sum (t1.^(k-1)/factorial(k-1).*y1 ...
+ t2.^(k-1)/factorial(k-1).*y2)*dt/2 ;
end
I want to write t1= ((n-2)*dt:dt:0dt) is it okay? and also t2=((n-1)dt:dt:dt).
Is it possible? I sew also some errors...

採用された回答

Walter Roberson
Walter Roberson 2012 年 7 月 4 日
編集済み: Walter Roberson 2012 年 7 月 4 日
Is t1= ((n-2)*dt:dt:0dt) intended to go to 0 ? If so then because n-2 is positive so you are going backwards from positive towards 0, you will need
(n-2)*dt: -dt : 0
  2 件のコメント
Sara
Sara 2012 年 7 月 4 日
Walter, Do you have any suggestion, how can I replace 'for' loop in this code to another data type e.g. vector? (New to MATLAB) Thanks in Advance
Walter Roberson
Walter Roberson 2012 年 7 月 5 日
You cannot replace the "for" loop with a different data structure. Your loop index, "n", is used as the endpoint for a colon index, so you are using expressions with different numbers of terms for different values of "n", and expressions with differing numbers of terms depending on the loop variable, cannot be vectorized.
To have any hope of vectorization, you will need to figure out the symbolic difference between the results for adjacent values of "n", and hope that that difference consists only of constants and individual array elements.

サインインしてコメントする。

その他の回答 (1 件)

F.
F. 2012 年 7 月 4 日
Hello,
t1 = ( (n-2):-1:0 ) *dt ;
t2 = t1 + dt ;
no ???
  1 件のコメント
Sara
Sara 2012 年 7 月 4 日
編集済み: Sara 2012 年 7 月 5 日
for both lines , your replacements for t1 and t2 are fine

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeMatrix Indexing についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by