A problem with grammar
Afficher commentaires plus anciens
Here is a function I wrote, with N beeing a scalar (example 6) and x a vector (example [0;1;2;3;4;5]). Y1 gets input as 0 in the example and Y2 as (36-x^2)
function [ sort1 , sort2 ] = front(N,x)
Y1=input('frontière inférieure: ','s') ;
s1=vectorize(Y1);
Y2=input('frontière supérieure: ','s');
s2=vectorize(Y2);
sort1= ones(1,N+1);
for d=1:1:N;
b=x(d);
a=s1(b);
sort1(d)=a;
end
sort2= ones(1,N+1);
for d=1:1:N;
b=x(d);
a=s2(b);
sort2(d)=a;
end
end
My problem are the lines a=s1(b) and a=s2(b). My goal is to inject the values of the vector x one by one in the expressions s1 and s2, but: 1)I am not sure my semantics are correct? 2)How does this program reacts when it receives a scalar instead of an expression?
This is what I get when i run the program:
frontière inférieure: 0
frontière supérieure: 36-x^2
??? Attempted to access s1(0); index must be a positive integer
or logical.
Error in ==> front at 12
a=s1(b);
Réponse acceptée
Plus de réponses (4)
Image Analyst
le 26 Juil 2012
2 votes
Yeah, a little problem with grammar - we use "syntax" when talking about that in regards to computer language rather than "grammar" or "semantics." But the problem is not a syntax problem - the real problem is that you're passing in x, which has a zero as one of its elements and you're trying to use that as an index for s1. You can't have zero as an index. So fix your x to have just positive integers, or make it a logical vector, and you should be okay.
Karel
le 26 Juil 2012
0 votes
Karel
le 26 Juil 2012
Image Analyst
le 26 Juil 2012
x=[0,1,2,3,4]
so,
b=x(d);
and N = 5, that means b will equal 0, 1, 2, 3, and 4 as the loop iterates. OK, let's look at the first iteration. You say
a=s1(b);
but b = x(1) in the first iteration, which means b = 0 because x(1) = 0. So now you're saying
a = s1(0);
That's just not allowed. You can't have 0 as an index. I hope it's clear now.
Catégories
En savoir plus sur Variables dans Centre d'aide et File Exchange
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!