Why am I not getting the m array?
1 view (last 30 days)
Show older comments
Mariam Shahab
on 1 Oct 2022
Commented: Mariam Shahab
on 1 Oct 2022
Hi all,
I have the following function:
function [m,yinter] = radial_lines(X,Y,xi,yi)
if X==Y
m=inf;
yinter= X;
return
end
% Calculate the slope:
m = (Y - yi)./((X) - xi);
% Solve for y-intercept
yinter = yi - m.*xi;
fplot(yinter)
end
%% data
X=[6,7,10,14,13,9];
Y=[12,9,7,8,10,14];
xi=10;
yi=10;
The issue i am running into is that when using the radial_lines function, I get a plot with horizontal lines. However I need the lines to have a slope. I am not quite sure what i am doing wrong when calculating the slopes. I should be getting an arry of m values but the code does not give me that output. Can some one kinldy help me out? Thanks.
Accepted Answer
Star Strider
on 1 Oct 2022
That clears up much.
Plotting them is simply this —
%% data
X=[6,7,10,14,13,9];
Y=[12,9,7,8,10,14];
xi=10;
yi=10;
figure
plot([ones(size(X))*xi; X], [ones(size(Y))*yi; Y], '-k')
grid
axis([5 15 6 15])
axis('equal')
text(X*1.01,Y*1.01,compose('(%2d,%2d)',[X;Y].'))
It is not necessary to plot the individual regressions, although you can certainly do that if you want to. Getting the slopes and intercepts may be enough, and your function does that.
.
0 Comments
More Answers (1)
Torsten
on 1 Oct 2022
Edited: Torsten
on 1 Oct 2022
yinter is not a function. So use "plot" instead of "fplot" (whatever abscissa data you might want to choose).
Not that yinter(3) = Inf which is not plotted.
%% data
X=[6,7,10,14,13,9];
Y=[12,9,7,8,10,14];
xi=10;
yi=10;
[m yinter] = radial_lines(X,Y,xi,yi)
function [m,yinter] = radial_lines(X,Y,xi,yi)
for i=1:numel(X)
if X(i)==xi
m(i)=inf;
yinter(i)= inf;
else
% Calculate the slope:
m(i) = (Y(i) - yi)/(X(i) - xi);
% Solve for y-intercept
yinter(i) = Y(i) - m(i)*X(i);
end
end
end
0 Comments
See Also
Categories
Find more on Linear and Nonlinear Regression 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!