Info
이 질문은 마감되었습니다. 편집하거나 답변을 올리려면 질문을 다시 여십시오.
Could anyone help me to solve the issue in the following code.
조회 수: 1 (최근 30일)
이전 댓글 표시
U =[0 0.0987 0 0 0.0767;
0 0.0141 0 0 0.0184]
V =[0 0.2948 0 0 0.2310;
0 0.4909 0 0 0.4257]
for v =1:size(V,2)
for u =1:size(U,1)
A(u,v) =((U(u-1,v-1)).*(V(u,v)))-sum((V(1:u-1,v)).*(U(u-1,v-1)))
end
end
In this code the expression A(u,v) does not need to perform for first row but it needs to be performed for second row.
Coud anyone please help me to solve this.
댓글 수: 5
Adam
2019년 7월 29일
Just initialise
A = V;
before the loop as this appears to be the end result you want.
You should make it clear in the question what end result you want though. There is no reason for us to assume that you want the first row to be equal to that of V when you just say " does not need to perform for first row"
답변 (2개)
Dvir Haberman
2019년 7월 29일
As Adam pointed out in the comments section: it seems like you're accessing index 0 of a MATLAB array. Unlike C, Python and others array indices in MATLAB starts in 1.
You could precalculate the first element and start your for loop from 2.
To start you loops from 2 simply do
for v =2:size(V,2)
for u =2:size(U,1)
A(u,v) =((U(u-1,v-1)).*(V(u,v)))-sum((V(1:u-1,v)).*(U(u-1,v-1)))
end
end
remember that you need to precalculate the first elements
댓글 수: 1
Guillaume
2019년 7월 29일
What I actually need is the ouput should be as follows:
[ 0 0.2948 0 0 0.2310;
0 (0.4909-0.2948)*0.0987 0 0 (0.4257-0.2310)*0.0767]
[0 0.2948 0 0 0.2310;
0 0.0775 0 0 0.0149]
Hum,
>> (0.4909-0.2948)*0.0987
ans =
0.019355
not 0.0775.
Assuming the v-1 were a mistake and the offset was only on the rows, this is equivalent to the expression you wrote in your question and doesn't require loops:
A = [V(1, :); U(1:end-1, :) .* (V(2:end, :) - cumsum(V(1:end-1, :), 1))]
댓글 수: 0
이 질문은 마감되었습니다.
참고 항목
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!