functions instead eval?

2 ビュー (過去 30 日間)
eng had
eng had 2020 年 5 月 26 日
回答済み: rubindan 2020 年 5 月 27 日
Hi everyone
How can I evalute a randomly generated equation as String,without using eval, to speed up my code
like:
'0.81472/mask(4)+mask(16)*mask(7)/mask(24)/mask(4)-mask(24)+mask(21)/mask(11)/mask(20)+mask(17)/mask(22)/mask(17)-mask(19)+mask(17)+mask(18)+mask(7)/mask(3)-mask(18)+mask(24)-mask(11)/mask(20)-mask(5)*mask(12)/mask(18)*mask(7)+mask(17)-mask(3)'
ps mask is an image mask 5*5 with changable values.
  18 件のコメント
per isakson
per isakson 2020 年 5 月 27 日
This might be a XY Problem. Instead of trying to evaluate an expression, which is representeted by a string, it might be better to search for a more useful way to represent the expression.
Image Analyst
Image Analyst 2020 年 5 月 27 日
編集済み: Image Analyst 2020 年 5 月 27 日
You assigned the tag "image processing". Why? I don't see any image processing in what you've presented so far. I don't see how assigning random operations will help you "detect the relation between the pixles in the sliding window". What relation do you hope to discover?
But I think what people would really like to hear is the use case. Why do you need to do this? What is the background? Please give us some context as to why you need to do this. Is it homework, or some real world research into something (if so, what)? Knowing that, people may be able to suggest a better approach.

サインインしてコメントする。

回答 (1 件)

rubindan
rubindan 2020 年 5 月 27 日
You can use str2func as follows:
rnstr = ['0.81472/mask(4)+mask(16)*mask(7)/mask(24)/mask(4)',...
'-mask(24)+mask(21)/mask(11)/mask(20)+mask(17)/mask(22)/mask(17)',...
'-mask(19)+mask(17)+mask(18)+mask(7)/mask(3)-mask(18)+mask(24)',...
'-mask(11)/mask(20)-mask(5)*mask(12)/mask(18)*mask(7)+mask(17)-mask(3)'];
str = ['@(mask) ',rnstr]; % add "mask" as the input
fh = str2func(str) % a function handle
val = fh(rand(1,50)); % value for some rnadom input

カテゴリ

Help Center および File ExchangeLoops and Conditional Statements についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by