Re: Bug in Octave 8.2.0
Markus Mützel <[email protected]> Wed, 16 Aug 2023 11:50:31 +0200
| Newsgroups | gmane.comp.gnu.octave.general |
|---|---|
| Message-ID | <trinity-84409051-d27e-4698-8f96-2425bea7b321-1692179431647@3c-app-gmx-bap08> |
Lacking a true `null` element in Octave, empty arrays have a special meaning. Essentially, they trigger a "deletion" of the specified LHS elements.
E.g.:
>> v = [1, 5, 8, 0];
>> v([1,3]) = [];
>> v
v =
5 0
Using `[]` or `''` is equivalent in that context.
In your second example, `v` has 0 elements. Trying to delete the first element results in an error. (The error message could be clearer though admittedly.)
For me that the error is slightly different:
>> v = {};
>> v(1)=''
error: A(I) = []: index out of bounds: value 1 out of bound 0
If you'd like to add a cell with the value `''` at the first position in the cell array `v`, you could use
v{1} = '';
or:
v(1) = {''};
Both variants should equivalently add a new cell element to the empty cell array v at the position 1 with the value `''`.
In your first example, the RHS is *not* an empty array. Thus, the deletion rules don't apply. Instead, the right hand side is converted to a 1x1 cell with the character '1' as the value of that single cell element.
I hope that helps.
Markus
Gesendet: Montag, 14. August 2023 um 15:25 Uhr
Von: "Ian McCallion" <[email protected]>
An: [email protected]
Betreff: Bug in Octave 8.2.0
v = {};
v(1)='1'
produces:
v =
{
[1,1] = 1
}
Which is right. However
v = {};
v(1)=''
produces:
error: A(I) = []: index out of bounds: value 2 out of bound 1
This is surely wrong. I should be able to initialise the cell array with empty strings???
Cheers... Ian
---------- We are transitioning to a web based forum for community help discussions at https://octave.discourse.group/c/help
----------
We are transitioning to a web based forum
for community help discussions at
https://octave.discourse.group/c/help