Creating a piecewise function
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
Ali Kiral
el 14 de Jun. de 2021
Comentada: Ali Kiral
el 14 de Jun. de 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 comentarios
Respuesta aceptada
Voss
el 14 de Jun. de 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);
Más respuestas (1)
Scott MacKenzie
el 14 de Jun. de 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)
Ver también
Categorías
Más información sobre Get Started with MATLAB en Help Center y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!