Function Call not working properly
Ältere Kommentare anzeigen
t = linspace(-10,15,26);
plot(t, x_general(t))
where x_general is defined as:
function [x_out] = x_general(x_in)
if x_in >= -5 & x_in < 5
x_out = -2 .* abs(x_in) + 10
elseif x_in > 5 & x_in <= 10
x_out = 10
else
x_out = 0
end
end
When I run this, my plot comes up blank. Not sure why this happens?
Antworten (2)
You probably want to be using logical indexing rather than if:
function y = fun(x)
y = zeros(size(x));
idx = x>5 & x<=10;
y(idx) = 10;
idx = x>=-5 & x<5;
y(idx) = -2 .* abs(x(idx)) + 10
end
2 Kommentare
Daniel Schilling
am 18 Okt. 2018
"What do you mean?"
The introductory tutorials teach the basic concepts, such as what indexing is, that you will need to know if you want to use MATLAB:
The point is that if does not apply to parts of an array, as you are trying to use it. But you can easily use logical indexing to specify parts of an array, and my answer shows you how.
Kevin Chng
am 18 Okt. 2018
t = linspace(-10,15,26);
plot(t, x_general(t))
function [x_out] = x_general(x_in)
x_out = zeros(1,length(x_in));
x_out(x_in >= -5 & x_in < 5) = -2 .* abs(x_in(x_in >= -5 & x_in < 5 )) + 10 ;
x_out(x_in > 5 & x_in <= 10) = 10 ;
end
In yor code, you are not returning the array, you return a single variable which is 0.
4 Kommentare
Daniel Schilling
am 18 Okt. 2018
Kevin Chng
am 18 Okt. 2018
Create a array first
x_out = zeros(1,length(x_in));
Then assign the number to your array by indexing.
x_out(x_in >= -5 & x_in < 5) = -2 .* abs(x_in(x_in >= -5 & x_in < 5 )) + 10 ;
This code below
x_in >= -5 & x_in < 5
Will give you something like
[ 0 1 0 1 1 1.....]
So that you know which element in your x_in fullfil the condition, and get them out for the calculation.
then Assign the output to some position of element you extracted from x_in.
It is indexing.
Daniel Schilling
am 18 Okt. 2018
Kevin Chng
am 18 Okt. 2018
Because your condition
sinc_in ~= 0
All is true which is 1.
if any of them is 0, then your condition is false.then you are not allow enter the if.
That's why the code in your question enter else there which is x_out=0
Kategorien
Mehr zu Special Characters finden Sie in Hilfe-Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!