Creating a piecewise function
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
Ali Kiral
am 14 Jun. 2021
Kommentiert: Ali Kiral
am 14 Jun. 2021
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 Kommentare
Akzeptierte Antwort
Voss
am 14 Jun. 2021
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);
Weitere Antworten (1)
Scott MacKenzie
am 14 Jun. 2021
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)
Siehe auch
Kategorien
Mehr zu Get Started with MATLAB finden Sie in Help Center und File Exchange
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!