How to build up linear functions in MATLAB and plot the?
15 次查看(过去 30 天)
显示 更早的评论
Hi, I am new in MATLAB and I want to build a code for these linear functions and plot them to use it in my research paper.
The general shape of the linear fuctions are attached.
The idea from these functions that if I have values for example from (0 to 0.04999) in x axis and i substitute them in the first linear function, I want the output to be from (0-0.25) ...
in the second linear function the input from (0.05 to 0.24999) so the output that I want to be are (0.3 - 0.55).
in the third linear function the input from (0.25 to 0.6) so the output that I want to be are (0.6 - 1).
I dont intrest in exact value of the slope at this stage, I just want general functions to achieve what i want.
Thanks in advance
0 个评论
回答(3 个)
Star Strider
2022-8-3
The lilnes are easy enough to plot —
xm = [0 0.04999; 0.05 0.24999; 0.25 0.6];
ym = [0 0.25; 0.3 0.55; 0.6 1];
for k = 1:size(xm,1)
B(:,k) = [xm(k,:); 1 1].' \ ym(k,:).'; % Slopes & Intercepts
end
figure
hold on
for k = 1:size(xm,1)
plot(xm(k,:), ym(k,:), '-k')
end
hold off
What do you want to do with them after that?
.
21 个评论
dpb
2022-8-3
% the lookup table/interpolant function...
y=[0 0.25 0.30 0.55 0.6 1];
x=[0 0.05-eps(0.05) 0.05 0.25-eps(0.25) 0.25 0.6];
% let's use it...
xh=[0:0.01:0.6]; % sample points to evaluate
yh=interp1(x,y,xh); % functional values
plot(xh,yh,'x') % see what it looks like...
results in
plot() by default would draw the line between the breakpoints; hence the markers only here to illustrate...
8 个评论
dpb
2022-8-3
编辑:dpb
2022-8-4
The lookup table aspects of @doc:interp1 can be extremely handy tool for shortening user code such as here -- using it for reverse lookup is also something not to be overlooked.
The only disadvantage here I can see is that one does, indeed, have to use values within each segment only to draw a continuous line segment that will show the discontinuity without a line segment drawn between sections. But, the other solutions also all have to have some other way to handle it that is at least as much code/logic as would be using the segment breakpoints in a loop similarly as to @Star Strider
xq = [0.12 rand(1,9)*0.6]; % Supplied Values For 'x'
yq=fnY(xq); % 'y'
Points = [xq; yq]
figure
hold on
xm=reshape(x,2,[]).'; % convert to S-S's variable from mine
for k = 1:size(xm,1)
plot(xm(k,:), fnY(xm(k,:)), '-', 'DisplayName',sprintf('Segment %d',k))
end
plot(xq,yq,'rs', 'DisplayName','(xq,yq)')
hold off
legend('Location','best')
gives
which is same plot with slightly different set of randomized xq,yq points...I was just too lazy to go to the extra trouble so just dumped the points out to simulate the lines.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Resizing and Reshaping Matrices 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!