MATLAB - find multidimensional indices of entries located in nested cell array










2















In MATLAB, say I have a cell array as follows:



cell_arr = 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'a', 'b', 'c';


I want a way to find all locations in the cell array where e.g., 'a' occurs. So something like



where(cell_arr, 'a'); % returns e.g., [[1 1] ; [3 1]]


How can I do this?



Thanks for any help.










share|improve this question






















  • Are the contents of the cell arrays actually single characters like this or are they potentially words or multi-character strings?

    – Suever
    Nov 14 '18 at 23:57












  • They are words in the form of char vectors. So, not single characters. Thanks.

    – user3558855
    Nov 15 '18 at 0:06















2















In MATLAB, say I have a cell array as follows:



cell_arr = 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'a', 'b', 'c';


I want a way to find all locations in the cell array where e.g., 'a' occurs. So something like



where(cell_arr, 'a'); % returns e.g., [[1 1] ; [3 1]]


How can I do this?



Thanks for any help.










share|improve this question






















  • Are the contents of the cell arrays actually single characters like this or are they potentially words or multi-character strings?

    – Suever
    Nov 14 '18 at 23:57












  • They are words in the form of char vectors. So, not single characters. Thanks.

    – user3558855
    Nov 15 '18 at 0:06













2












2








2








In MATLAB, say I have a cell array as follows:



cell_arr = 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'a', 'b', 'c';


I want a way to find all locations in the cell array where e.g., 'a' occurs. So something like



where(cell_arr, 'a'); % returns e.g., [[1 1] ; [3 1]]


How can I do this?



Thanks for any help.










share|improve this question














In MATLAB, say I have a cell array as follows:



cell_arr = 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'a', 'b', 'c';


I want a way to find all locations in the cell array where e.g., 'a' occurs. So something like



where(cell_arr, 'a'); % returns e.g., [[1 1] ; [3 1]]


How can I do this?



Thanks for any help.







matlab indexing cell-array






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Nov 14 '18 at 22:52









user3558855user3558855

91112




91112












  • Are the contents of the cell arrays actually single characters like this or are they potentially words or multi-character strings?

    – Suever
    Nov 14 '18 at 23:57












  • They are words in the form of char vectors. So, not single characters. Thanks.

    – user3558855
    Nov 15 '18 at 0:06

















  • Are the contents of the cell arrays actually single characters like this or are they potentially words or multi-character strings?

    – Suever
    Nov 14 '18 at 23:57












  • They are words in the form of char vectors. So, not single characters. Thanks.

    – user3558855
    Nov 15 '18 at 0:06
















Are the contents of the cell arrays actually single characters like this or are they potentially words or multi-character strings?

– Suever
Nov 14 '18 at 23:57






Are the contents of the cell arrays actually single characters like this or are they potentially words or multi-character strings?

– Suever
Nov 14 '18 at 23:57














They are words in the form of char vectors. So, not single characters. Thanks.

– user3558855
Nov 15 '18 at 0:06





They are words in the form of char vectors. So, not single characters. Thanks.

– user3558855
Nov 15 '18 at 0:06












1 Answer
1






active

oldest

votes


















0














This solution may not be simple but it will work. Basically, just loop through each cell in the multidimensional cell array and find the location of the word:



function location = where(cell_arr, word)

% initialize location
location = zeros(sum(char([cell_arr:]) == word),2);

% loop through cell_arr to find the location
count = 0;
for i = 1:length(cell_arr)
for j = 1:length(cell_arri)
if cell_arrij == word
count = count + 1;
location(count,:) = [i j];
end
end
end
end


Example



where(cell_arr, 'a')


Output:



ans =
1 1
3 1





share|improve this answer






















    Your Answer






    StackExchange.ifUsing("editor", function ()
    StackExchange.using("externalEditor", function ()
    StackExchange.using("snippets", function ()
    StackExchange.snippets.init();
    );
    );
    , "code-snippets");

    StackExchange.ready(function()
    var channelOptions =
    tags: "".split(" "),
    id: "1"
    ;
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function()
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled)
    StackExchange.using("snippets", function()
    createEditor();
    );

    else
    createEditor();

    );

    function createEditor()
    StackExchange.prepareEditor(
    heartbeatType: 'answer',
    autoActivateHeartbeat: false,
    convertImagesToLinks: true,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: 10,
    bindNavPrevention: true,
    postfix: "",
    imageUploader:
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    ,
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    );



    );













    draft saved

    draft discarded


















    StackExchange.ready(
    function ()
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53309929%2fmatlab-find-multidimensional-indices-of-entries-located-in-nested-cell-array%23new-answer', 'question_page');

    );

    Post as a guest















    Required, but never shown

























    1 Answer
    1






    active

    oldest

    votes








    1 Answer
    1






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    0














    This solution may not be simple but it will work. Basically, just loop through each cell in the multidimensional cell array and find the location of the word:



    function location = where(cell_arr, word)

    % initialize location
    location = zeros(sum(char([cell_arr:]) == word),2);

    % loop through cell_arr to find the location
    count = 0;
    for i = 1:length(cell_arr)
    for j = 1:length(cell_arri)
    if cell_arrij == word
    count = count + 1;
    location(count,:) = [i j];
    end
    end
    end
    end


    Example



    where(cell_arr, 'a')


    Output:



    ans =
    1 1
    3 1





    share|improve this answer



























      0














      This solution may not be simple but it will work. Basically, just loop through each cell in the multidimensional cell array and find the location of the word:



      function location = where(cell_arr, word)

      % initialize location
      location = zeros(sum(char([cell_arr:]) == word),2);

      % loop through cell_arr to find the location
      count = 0;
      for i = 1:length(cell_arr)
      for j = 1:length(cell_arri)
      if cell_arrij == word
      count = count + 1;
      location(count,:) = [i j];
      end
      end
      end
      end


      Example



      where(cell_arr, 'a')


      Output:



      ans =
      1 1
      3 1





      share|improve this answer

























        0












        0








        0







        This solution may not be simple but it will work. Basically, just loop through each cell in the multidimensional cell array and find the location of the word:



        function location = where(cell_arr, word)

        % initialize location
        location = zeros(sum(char([cell_arr:]) == word),2);

        % loop through cell_arr to find the location
        count = 0;
        for i = 1:length(cell_arr)
        for j = 1:length(cell_arri)
        if cell_arrij == word
        count = count + 1;
        location(count,:) = [i j];
        end
        end
        end
        end


        Example



        where(cell_arr, 'a')


        Output:



        ans =
        1 1
        3 1





        share|improve this answer













        This solution may not be simple but it will work. Basically, just loop through each cell in the multidimensional cell array and find the location of the word:



        function location = where(cell_arr, word)

        % initialize location
        location = zeros(sum(char([cell_arr:]) == word),2);

        % loop through cell_arr to find the location
        count = 0;
        for i = 1:length(cell_arr)
        for j = 1:length(cell_arri)
        if cell_arrij == word
        count = count + 1;
        location(count,:) = [i j];
        end
        end
        end
        end


        Example



        where(cell_arr, 'a')


        Output:



        ans =
        1 1
        3 1






        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered Nov 15 '18 at 2:23









        Banghua ZhaoBanghua Zhao

        1,2851720




        1,2851720





























            draft saved

            draft discarded
















































            Thanks for contributing an answer to Stack Overflow!


            • Please be sure to answer the question. Provide details and share your research!

            But avoid


            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.

            To learn more, see our tips on writing great answers.




            draft saved


            draft discarded














            StackExchange.ready(
            function ()
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53309929%2fmatlab-find-multidimensional-indices-of-entries-located-in-nested-cell-array%23new-answer', 'question_page');

            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            這個網誌中的熱門文章

            What does pagestruct do in Eviews?

            Dutch intervention in Lombok and Karangasem

            Channel Islands