My function won't accept the vector
6 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Natalie
el 6 de En. de 2023
Comentada: Natalie
el 7 de En. de 2023
x = 0:1:10;
f(x) = x.^2-x-1;
I keep getting an error message saying Array indices must be positive integers or logical values. I am trying to find values of f(x) within certain parameters using the find function.
0 comentarios
Respuesta aceptada
Arif Hoq
el 7 de En. de 2023
Movida: Image Analyst
el 7 de En. de 2023
You can not specify 0 as an index
x = 0:1:10;
f = x.^2-x-1
Más respuestas (3)
Walter Roberson
el 7 de En. de 2023
x = 0:1:10;
okay, x is a list of values [0 1 2 3 4 5 6 7 8 9 10]
f(x) = x.^2-x-1;
you have to substitute in that list of values, so your statement is effectively
f(0:10) = (0:10).^2-(0:10)-1;
which tries to assign to index 0, 1, 2, ... 10. But MATLAB does not permit index 0, so you have a problem.
You could write
f(x+1) = x.^2-x-1;
which would then be equivalent to
f((0:10)+1) = (0:10).^2-(0:10)-1;
which would assign to index locations 1, 2, 3... 11.
But if you are going to define x that way, you might easily have wanted to do something like
x = 0:0.1:10;
and if you add 1 to that you would just end up with indices such as 1, 1.1, 1.2, and so on. Non-integer indices are not permitted either.
2 comentarios
Walter Roberson
el 7 de En. de 2023
When you have a statement such as
f(x) = x.^2-x-1;
you need to decide whether you are working with arrays or if you are working with formulas .
If you are working with arrays, then the (x) part of f(x) has to be non-negative integers.
If you are working with formulas then the (x) on the left has to be a symbolic variable (Symbolic Toolbox)
syms x
f(x) = x.^2-x-1;
X = 0:1:10;
plot(X, f(X))
Walter Roberson
el 7 de En. de 2023
You should learn this programming pattern: you will use it a lot.
%can be negative, non-integer, can include duplicates,\
% does not need to be sorted
xvals = -1:.1:1;
num_x = numel(xvals); %how many are there?
f = zeros(size(xvals)); %pre-allocate output same size as input
for xidx = 1 : num_x %loop over INDICES
x = xvals(xidx); %pull out one SPECIFIC value into your x
y = x.^2-x-1; %calculate based on that ONE x
f(xidx) = y; %store into a location according to the INDEX
end
plot(xvals, f) %use the entire vector of values, NOT plot(x, f)
Adam Danz
el 7 de En. de 2023
Movida: Image Analyst
el 7 de En. de 2023
Perhaps you're looking for
x = 0:1:10;
f = x.^2-x-1;
0 comentarios
Image Analyst
el 7 de En. de 2023
See the FAQ:
You probably want
x = 0:1:10;
f = x.^2-x-1
0 comentarios
Ver también
Categorías
Más información sobre Matrix Indexing en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!