How to use IF with @(block_struct) function
    8 次查看(过去 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!