Creating a piecewise function
1 次查看(过去 30 天)
显示 更早的评论
I am trying to make that triangular wave for one period with the code (I don't want to plot it, just to generate x and y values in the interval)
x = 0 : 0.5 : 4;
for k = 1 : length(x)
if x(k) < 1
y(k) = 0;
elseif x(k) >= 1 & x(k) < 2
y(k) = x-1;
elseif x(k) >=2 & x(k) < 3
y(k) = 3-x;
elseif x(k)>=3
y(k) = 0;
end
end
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/652895/image.png)
Then Matlab returns 'In an assignment A(I) = B,...' I think I am not trying to assign a scalar to a vector or vice versa, what is the problem here?
0 个评论
采纳的回答
Voss
2021-6-14
The line:
y(k) = x-1;
tries to assign the entire vector x-1 to a single element (the kth element) of y. Instead it should be:
y(k) = x(k)-1;
Similarly the line:
y(k) = 3-x;
should be:
y(k) = 3-x(k);
更多回答(1 个)
Scott MacKenzie
2021-6-14
A few bugs in your code. Here's the fix (although there are easier ways to do this):
x = 0 : 0.5 : 4;
for k = 1 : length(x)
if x(k) < 1
y(k) = 0;
elseif x(k) < 2
y(k) = x(k)-1;
elseif x(k) < 3
y(k) = 3-x(k);
else
y(k) = 0;
end
end
plot(y);
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/652975/image.jpeg)
另请参阅
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!