Index in position 2 exceeds array bounds (must not exceed 25).
1 view (last 30 days)
Show older comments
function[spl] = tryal2(f,P,t)
if f == 40
w = 2*pi*f;
A = 10;
end
c = 343;
x = [0:.5:11];
y = [0:.5:15];
k = w/c;
[xx,yy]= meshgrid(x,y);
H = sqrt((xx-0).^2)+(yy-9).^2;
Lx = length(x);
Ly = length(y);
phasor = zeros(Lx,Ly);
Meanpressure = zeros(Lx,Ly);
spl = zeros(Lx,Ly);
for a=1:Lx
for b=1:Ly
phasor(a,b) = ((A+P)./H(a,b))*exp(1j*((w*t)-((w/c)*H(a,b))));
Meanpressure(a,b) = sqrt(0.5*phasor(a,b)*conj(phasor(a,b)));
spl(a,b)= 20*log10(Meanpressure(a,b)/(20*10^(-6)));
end
end
figure
surf(xx,yy,spl)
The error occurs in phasor(a,b) = ((A+P)./H(a,b))*exp(1j*((w*t)-((w/c)*H(a,b)))); i am confused what i am doing wrong I need a grid by 11 by 14 but i only get answers if x and y martixes are the same.
0 Comments
Answers (3)
Geoff Hayes
on 26 Apr 2019
benjamin - isn't H of length Lx (or Ly since identical) and is an array? Treating it like a matrix as H(a,b) would then lead to this error. Note how
H = sqrt((xx-0).^2)+(yy-9).^2;
and so is not a matrix since xx and yy are arrays.
3 Comments
Geoff Hayes
on 26 Apr 2019
well either make H a matrix or just grab H(b) on each iteration. to be honest i don't know enough about your code (i.e. what it does) to tell you what to do.
Geoff Hayes
on 27 Apr 2019
Benjamin - please provide the inputs to your function. What is f? What are P and t?
Also, please further the conversation by adding comments and not creating answers.
See Also
Categories
Find more on Matrix Indexing in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!