Passing input variables to function

116 vues (au cours des 30 derniers jours)
Hamza
Hamza le 28 Avr 2014
Commenté : Hamza le 28 Avr 2014
Hi,
I am working on a script in which I define variables that then get passed onto a function to do further calculations with.
I am able to pass numerical values across but when I try to pass on a string of say 'yellow' across to the function I get the following error message ' In an assignment A(I) = B, the number of elements in B and I must be the same.'
I was wondering if anyone could point me towards the right approach to take when passing text between Matlab function.
Many thanks in advance.
Hamza
  4 commentaires
Hamza
Hamza le 28 Avr 2014
Hi Mischa,
Would this help?
m-file:
number_jackets = 5
colour = 'yellow'
var(1) = number_jackets
var(2) = colour
func = trial(var)
In this example I am trying to pass across the number of jackets and the colour of the jackets.
Is this what you were asking for?
Hamza
dpb
dpb le 28 Avr 2014
Close enough... :)

Connectez-vous pour commenter.

Réponse acceptée

dpb
dpb le 28 Avr 2014
OK, you're needing a cell array to hold the disparate types in one array. Write
var{1} = number_jackets;
var{2} = colour;
instead. NB: the "curlies", the '{}' instead of parens to create the cell array.
For such a case, as it'll be highly likely you'll want to access the two in the function rather than combine in a cell I'd probably either
a) pass them separately, particularly if they're going to be the only arguments to the function, or
b) make the related stuff into a structure with named fields for the clothing article
  1 commentaire
Hamza
Hamza le 28 Avr 2014
Thank you very much dpb, the curlies did the trick! :)
Hamza

Connectez-vous pour commenter.

Plus de réponses (1)

Niklas Nylén
Niklas Nylén le 28 Avr 2014
Modifié(e) : Niklas Nylén le 28 Avr 2014
The problem is that you are trying to put mixed data types (one number and one string) into the same vector. If you use a cell instead, by replacing () with {} this is possible:
number_jackets = 5
colour = 'yellow'
var{1} = number_jackets
var{2} = colour
You will need to use {} when accessing the elements again.
myJacketColor = var{2}
Another way is to pass them as two separate arguments
func = trial(number_jackets, colour)
  1 commentaire
Hamza
Hamza le 28 Avr 2014
Thank you very much Niklas!
Hamza

Connectez-vous pour commenter.

Catégories

En savoir plus sur Characters and Strings dans Help Center et File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by