Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab中函数的绘图_Matlab_Function_Graph - Fatal编程技术网

Matlab中函数的绘图

Matlab中函数的绘图,matlab,function,graph,Matlab,Function,Graph,我需要在Matlab中绘制此函数: 线路必须连接,我的意思是在递减线路的末尾,递增线路必须开始,等等。它看起来像这样: t = linspace(0,10,1001); 有什么想法吗?我需要一个很宽的间隔,例如t从0变为10,它不能按预期工作的原因是,对于在0.1秒的倍数之间绘制的每条曲线,没有正确计算y-截距,因此曲线没有放在正确的位置。对于曲线的第一部分,y=-57.5t,y-截距位于原点,因此曲线是y=-57.5t。但是,当到达0.1秒时,您需要为这条新线求解y-截距,因为它已经偏

我需要在Matlab中绘制此函数:

线路必须连接,我的意思是在递减线路的末尾,递增线路必须开始,等等。它看起来像这样:

t = linspace(0,10,1001);


有什么想法吗?我需要一个很宽的间隔,例如t从0变为10,它不能按预期工作的原因是,对于在
0.1
秒的倍数之间绘制的每条曲线,没有正确计算
y
-截距,因此曲线没有放在正确的位置。对于曲线的第一部分,
y=-57.5t
y
-截距位于原点,因此曲线是
y=-57.5t
。但是,当到达
0.1
秒时,您需要为这条新线求解
y
-截距,因为它已经偏移了。具体而言:

y = 42.5t + b
我们知道,在
t=0.1
秒时,
y=-5.75
给定上一条曲线。求解
y
-截距可以得到:

-5.75 = (42.5)(0.1) + b
b = -10

因此,在
0.1s之间,您确定预期的绘图将与您的图形相似吗?如果该函数仅为0和0.2之间的t定义,那么当t>0.2时是什么?@etf-它不能按预期工作的原因是,当您每移动一次
0.1s
的行时,您没有考虑
y
-截距。我会写一个答案来解释这一点。这是我的阴谋0@etf-没关系:)你只需要一点数学知识。这是一个需要解决的有趣问题,我已经给出了答案。祝你好运@etf-我的荣幸!这是一个需要解决的有趣问题。。。我只需要提供一个答案:)祝你好运,谢谢你接受我的答案!
y = -57.5t + b
-1.5 = -(57.5)(0.2) + b
b = 10
t = linspace(0,10,1001);
m = [-57.5 repmat([42.5 -57.5], 1, 50)];
y = zeros(1,101);
y(2:2:101) = 1;
y = 10*cumsum(y);
y(2:2:101) = -y(2:2:101);
%// Define time vector
t = linspace(0,10,1001);

%// Define slopes
m = [-57.5 repmat([42.5 -57.5], 1, 50)];

%// Define y-intercepts
y = zeros(1,101);
y(2:2:101) = 1;
y = 10*cumsum(y);
y(2:2:101) = -y(2:2:101);

%// Calculate the output curves for each segment
out = zeros(1, numel(t));
for idx = 1 : numel(y)-1
    %// Compute where in the time array and output array
    %// we need to write to
    vals_to_access = (idx - 1)*10 + 1 : idx*10;

    %// Create the curve for this segment
    out(vals_to_access) = m(idx)*t(vals_to_access) + y(idx);
end

%// Copy second last value over to last value
out(end) = out(end-1);

%// Plot the curve
plot(t,out);
axis tight;