How to plot a function using a variable that is calculated over a range?

5 views (last 30 days)
Hello there,
I am new to plotting in MATLAB and am interested in plotting a function using a variable that is calculated over a range. I am getting an error that my matrix dimensions must agree. x is a matrix that is increasing from a to b with 2000 entries. I want to calculate a y that has the same number of entries as x and where x is used in the calculation. Once y is calculated I am interested in plotting y(x).
a = 1.7;
b = 1.3;
c = 0.9;
L = 2000; % Matrix size (1x2000)
l = 0 : (L-1);
x = b + l*((a-b)/L);
y = (c/(2*pi*(sqrt((a*a)-(x.^2))))*(2*atan(sqrt((x.^2)-(b*b))/sqrt((a*a)-(x.^2)))));
figure
plot(x,y,'Color',[0,0.7,0.9])
title('2-D Line Plot')
xlabel('x')
ylabel('y')

Accepted Answer

Star Strider
Star Strider on 24 Feb 2024
When in doubt, vectorise every multiplication, exponention, and division.
With those changes (and nothing else) it works —
a = 1.7;
b = 1.3;
c = 0.9;
L = 2000; % Matrix size (1x2000)
l = 0 : (L-1);
x = b + l*((a-b)/L);
y = (c./(2*pi*(sqrt((a*a)-(x.^2)))).*(2*atan(sqrt((x.^2)-(b*b))./sqrt((a*a)-(x.^2)))));
figure
plot(x,y,'Color',[0,0.7,0.9])
title('2-D Line Plot')
xlabel('x')
ylabel('y')
I vectorised everything not already vectorised except a*a and b*b, since they obviously do not need vectorisation.
.

More Answers (0)

Products


Release

R2022b

Community Treasure Hunt

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

Start Hunting!