Removing cellfun, regexp and function handles
3 次查看(过去 30 天)
显示 更早的评论
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 个评论
Randy Souza
2013-2-19
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.
采纳的回答
Sean de Wolski
2013-2-13
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.
更多回答(0 个)
另请参阅
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!