MATLAB Answers


How to use variable value as an input to the function?

Asked by Marcin
on 31 Jul 2013
I have the function which takes two arguments:
match(template1 , template2);
I want to save the first and second argument name as a string:
name1 = 'template1'; name2 = 'template2';
And then pass this names into my match function:
match( name1 , name2 )
MATLAB reads it as strings but I want it to be pointers to to template1 and template2. Do you know how to achieve this?


Better back up and describe what end objective is--Matlab is not C so talking about pointers is generally an attempt to implement something as if it were.
I'm sorry, the thing is that I have 100 templates and I need to compare them to each other by the function match, doing this manually would be 10000 lines of code, is it possible to write for loop to produce the results:
result(n)(m) = match( template(n) , template(m) )
where m and n are variables.

Sign in to comment.

2 Answers

Answer by Walter Roberson
on 31 Jul 2013

function r = match(t1 , t2)
name1 = inputname(1);
name2 = inputname(2);
r = match_by_name(name1, name2);
where match_by_name is your second "match" function.

  1 Comment

nT = length(template);
result = cell(nT,nT);
for K = 1 : nT
result{K,K} = match(template{K}, template{K}); %match against self??
for L = K + 1, nT
result{K, L} = match(template{K}, template{L});

Sign in to comment.

Answer by Richard Brown on 31 Jul 2013

You can very probably get away with just passing template1 and template2 themselves (not trying to create references to them).
Matlab won't create copies unless you modify them within your match function.


Sign in to comment.