How to use IF with @(block_struct) function
3 次查看(过去 30 天)
显示 更早的评论
fun2 = @(block_struct) ...
if block_struct.data < 100
std2(block_struct.data) * (block_struct.data));
end
Doesnt work.
I actually want to manipulate individual elements of my block
blocks made of 8x8 values ranging from 0-255
2 个评论
Geoff Hayes
2020-11-22
Saud - can you show us what the block_struct looks like with respect to attributes/properties? Presumably it has a data field. It isn't clear to me why you are doing
fun2 = @(block_struct) ...
where block_struct is the input to some function. Or are you hoping that all of the code
fun2 = @(block_struct) ...
if block_struct.data < 100
std2(block_struct.data) * ones(size(block_struct.data));
end
is an anonymous function? If so, then I don't think that the above is valid...
采纳的回答
Athul Prakash
2020-11-24
Hi Saud,
Since blockproc uses anonymous functions, you may save your multi-line function into a script, say myFunc.m and then pass @myFunc to your blockproc call.
You can find block_struct structure described in the following doc (under More About section): 'blockproc' Documentation.
You may work out a way to manage the sequence artificially using some of those fields. For example, using block_struct.location to skip processing the 2nd block:
function out = myFunc(block_struct) % size would be 100x100
if(block_struct.location(2)==101)
% skipping the 2nd block.
out = block_struct.data;
else
% code for processing every other element
end
end
Hope it helps!
3 个评论
Athul Prakash
2020-11-24
Glad to help. Have you considered accepting this answer? On this platform, 'Accepting' is considered the highest form of validation for any answer. In addition to expressing the Questioner's satisfaction/gratitude, Accepting also makes an answer more discoverable to the rest of the community browsing this platform.
Not to blow my own trumpet though ;).
Cheers!
更多回答(0 个)
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!