title: Why can a matlab table variable be changed using the old value, but a cell string can not?
body: <p>I can rename a matlab <code>table</code> variable using its current value. E.g. with a  table <code>x</code> this works ok: </p>
  
  <pre><code>x.Properties.VariableNames{'Value'} = 'New_Variable_Name';    % this works
  </code></pre>
  
  <p>So why doesn't the same thing work with a cell array of strings? </p>
  
  <pre><code>y = {'aa', 'bb'}; 
  y{'bb'} = 'cc';    % this does not work
  
  The right hand side of this assignment has too few values to satisfy the left hand side.
  </code></pre>
  
  <p>What is the reason? The two objects appear to have (or at least, return) the same class (<code>cell</code>). </p>
  
  <pre><code>&gt;&gt; class(x.Properties.VariableNames)
  
  ans =
  
  cell
  
  &gt;&gt; class(y)
  
  ans = 
  
  cell 
  </code></pre>
  
  <p>Is this behaviour specific to matlab <code>table</code>s?</p>