Removing cellfun, regexp and function handles
4 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Hi all,
I've been trying to rewrite a line of Matlab code so that I can convert the code into C using Matlab Coder. The original line was this:
my_index = cellfun(@(x)~isempty(x),regexp({my_results.name},'my_string'));
At the moment the code I've got to do the same as the line above is:
n = numel(my_results);
my_results = false(n,1);
for ii = 1:n
my_results(ii) = coder.ceval(strstr(my_results(ii).name,'my_string'));
end
len_new_my_results = length(new_my_results);
for ii = len_new_my_results:-1:1
my_index(ii) = ~isempty(new_my_results{ii});
end
This however is giving me an error saying "Improper index matrix referencing" at the line my_results(ii) = coder.ceval(strstr(my_results(ii).name,'my_string'));
I have tried reading up about what it means and I think it has something to do with a variable being an input to a function (this is true in my case, my_results is an input to the function where this piece of code is)? Is there a way to get around it?
Any pointers in the right direction will be greatly appreciated. Thank you.
1 comentario
Randy Souza
el 19 de Feb. de 2013
I have restored the original text of this question.
Evelina, this question has a clear subject and an accepted answer, so it may be valuable to someone else in the future. If you have a good reason why it should be removed from MATLAB Answers, please flag the question, explain why it should be deleted, and an administrator or high-reputation contributor will consider deleting the question. Please do not simply edit your question away.
Respuesta aceptada
Sean de Wolski
el 13 de Feb. de 2013
Don't convert to cell:
new_my_results = regexp({my_results.name},'my_string');
Instead use (I assume this is a struct array):
n = numel(my_results);
my_results = false(n,1);
for ii = 1:n
my_results(ii) = mystrfind(my_results(ii).name,'my_string');
end
You'll have to write your own mystrfind since none of the string finding things appear to be supported for codegen. This could be doen real easily with a for-loop over the values. You could also consider using coder.ceval to just use the C string finding function.
Más respuestas (0)
Ver también
Categorías
Más información sobre Loops and Conditional Statements en Help Center y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!