Why am I not getting the m array?
Afficher commentaires plus anciens
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.
6 commentaires
I am not certain what your code is doing.
An easier way to calculate the parameters for a linear regression is:
%% data
X=[6,7,10,14,13,9];
Y=[12,9,7,8,10,14];
B = [X(:) ones(size(X(:)))] \ Y(:) % Parameters: B(1) = m, B(2) = b
Yfit = [X(:) ones(size(X(:)))] * B; % Regression Fit (For 'plot’)
figure
plot(X, Y, 'p', 'DisplayName','Data')
hold on
plot(X, Yfit, '-r', 'DisplayName','Regression')
hold off
grid
xlabel('X')
ylabel('Y')
legend('Location','best')
axis([5 15 6 15])
Mariam Shahab
le 1 Oct 2022
Torsten
le 1 Oct 2022
I am trying to get the equations of lines that start from (xi,yi ).
Then
yinter = Y - m.*X
not
yinter = yi - m.*xi
Mariam Shahab
le 1 Oct 2022
Slope and y-intercept can be obtained from my answer given below.
X=[6,7,10,14,13,9];
Y=[12,9,7,8,10,14];
xi=10;
yi=10;
hold on
for i=1:6
plot([X(i),xi],[Y(i),yi])
end
hold off
Mariam Shahab
le 1 Oct 2022
Réponse acceptée
Plus de réponses (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
Catégories
En savoir plus sur Spline Postprocessing dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!



