//Question: Before interpolation the A matrix data i was unable to execute it because it was throwing error like A(2.6) for diffrent n(always integer) integers. Then i tried interpolating my matrix A . Its not giving proper results. Also i want my final answer to be displayed after for loop
t = 1 : 9;
t1= 1 : 0.1: 9;
A = [916.3 , 923.6 , 933.1, 947.4, 966.2, 986.6, 1008.5, 1031.5, 1051.3];
A1= interp1( t , A, t1 , 'nearest');
a=1;
b=9;
n=6;
h=(b-a)/n;
for i = 0:3
ans =0.5*[A1*(a+(i*h)) + A1(a+(i+1)*h)]*h;
end

 채택된 답변

Azzi Abdelmalek
Azzi Abdelmalek 2013년 11월 6일
편집: Azzi Abdelmalek 2013년 11월 6일

0 개 추천

This line A1= interp1( t , A, t1 , 'nearest') is not correct, t is not defined, use
A1= interp1( time , A, t1 , 'nearest')
Add
a = 1;
b = 9;
n = 4;
h = (b-a)/n;
A = [916.3, 923.6, 933.1, 947.4, 966.2, 986.6, 1008.5, 1031.5, 1051.3 ];
for i = 0:3
res = 0.5 * [ A(a+(i*h)) + A(a+(i+1)*h) ]*h;
disp(res)
end

댓글 수: 8

Azzi Abdelmalek
Azzi Abdelmalek 2013년 11월 6일
편집: Azzi Abdelmalek 2013년 11월 6일
A(2.6) is not correct, the index should be a positive integer or logical.
If you want the value of A1 for t1=2.6,
A1(t1==2.6)
Rizwana
Rizwana 2013년 11월 6일
편집: Rizwana 2013년 11월 6일
Hi: That was my typing mistake. Iam still getting not so correct value. Before interp1 function program is shown below: here the for loop executed 3 times and it displayed results because i have hand calculations it was matching. But this code was not working with variable n integers. Now iam not getting proper answer when i use interpolation
a = 1;
b = 9;
n = 4;
h = (b-a)/n;
A = [916.3, 923.6, 933.1, 947.4, 966.2, 986.6, 1008.5, 1031.5, 1051.3 ];
for i = 0:3
ans = 0.5 * [ A(a+(i*h)) + A(a+(i+1)*h) ]*h
disp('ans')
end
Thank You
a = 1;
b = 9;
n = 4;
h = (b-a)/n;
A = [916.3, 923.6, 933.1, 947.4, 966.2, 986.6, 1008.5, 1031.5, 1051.3 ];
for i = 0:3
res = 0.5 * [ A(a+(i*h)) + A(a+(i+1)*h) ]*h;
disp(res)
end
Rizwana
Rizwana 2013년 11월 6일
편집: Rizwana 2013년 11월 6일
this wont work when i change n value to 5 or 6 or some other value also o/p is something like this:
res=
1.8494 e+003
1.8494 e+003
res=
1.8993e+003
1.8993e+003
res=
1.9747e+003
1.9747e+003
res=
2.059e+003
2.059e+003
// instead of multiple results i would like to have one res showing:
res=(1.8494 e+003)+(1.8993e+003)+(1.9747e+003)+(2.059e+003)
Thank You
Azzi Abdelmalek
Azzi Abdelmalek 2013년 11월 6일
편집: Azzi Abdelmalek 2013년 11월 6일
%If a+(i*h)) and a+(i+1)*h represent time
a = 1;
b = 9;
n = 5;
h = (b-a)/n;
t = 1 : 9;
A = [916.3, 923.6, 933.1, 947.4, 966.2, 986.6, 1008.5, 1031.5, 1051.3 ];
for i = 0:3
res=0.5*h*(interp1(t,A,a+i*h)+interp1(t,A,a+(i+1)*h));
disp(res)
end
Rizwana
Rizwana 2013년 11월 6일
Here the matrix A represents presure quantities at time 1 to 9... i.e; A(1)=916.3---> presurre recorded at time 1sec A(2)=923.6---> presure recorded at time 2 sec... when i change n value to 5; then A in my program becomes A(1.6) This is throwing error... Hence i splitted the time array from 1:0.1:9 then interpolated the presuure data i.e ; A matrix to these values... Tried coding using program... Not getting answer with interpolated values... I tried to run your program.. Its throwing error: subscript indices must be real positive or logical... Thank You
Azzi Abdelmalek
Azzi Abdelmalek 2013년 11월 6일
I don't think you tried the correct program, copy ant paste the code in my previous comment. It works without errors
Rizwana
Rizwana 2013년 11월 6일
Thank You so much.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 Interpolation에 대해 자세히 알아보기

태그

질문:

2013년 11월 6일

편집:

2013년 11월 6일

Community Treasure Hunt

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

Start Hunting!

Translated by