Acorbe
Acorbe

Reputation: 8391

Matlab: Slicing matrix inside a containers.Map always requires intermediate referencing?

Prologue:

I am in the process of designing/prototyping a piece of code in Matlab.

As at the moment it is not clear to me which matrices should be returned by my functions, I chose, as a general approach, to bind my returned values in containers.Map (as I would do e.g. in python).

Hence, the general setting is

  function output = myfoo(args)
      output = containers.Map;
      ...some stuff
      output('outname1') = ...
      output('outname2') = ...

  end

this approach should have the advantage of allowing me to add more returned data without messing up the other code too much or break backwards compatibility.


Issue:

How to deal in a elegant way with matrix slicing?

Say that I need to do something like

    output('outname1')(2:end) = ...

(which gives an error as two indexes are not allowed and a boring workaround like

    temp = output('outname1')
    temp(2:end) = ...
    output('outname1') = temp

is required).

Question:

Is there a proficient way to deal with this, avoiding all this referencing/copying job?

Upvotes: 0

Views: 87

Answers (1)

blue note
blue note

Reputation: 29081

No, there is no way to do it without a temporary variable. The only case in which a double index is valid in Matlab is for a cell array. In that case, you can use output{...}(...)

However, in any other case, a double index results in an error.

Upvotes: 1

Related Questions