Why am I not getting the m array?
1 次查看(过去 30 天)
显示 更早的评论
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.
采纳的回答
Star Strider
2022-10-1
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 个评论
更多回答(1 个)
Torsten
2022-10-1
编辑:Torsten
2022-10-1
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 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Linear and Nonlinear Regression 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!