MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi test

Learn moreOpportunities for recent engineering grads.

Apply TodayUnfortunately, Matlab's `subsref` function does not support the `end` -operator. The `end` -operator is a powerfull method to refer to the rear-end of an array,

a = 1:10; a(end-1) % is 9 a(end-2:end) % is [8 9 10]

It works similar for cell arrays and struct-arrays.

Alhough `subsref` is quite powerful, and accepts for example the `:` colon oparator, it fails to process more complex stings, including `end` -operators.

This assignment is to create a function that accepts those more complex element definitions.

For example

s.a.b(3).c{2}.d = 'a':'z'; subsref(s,substruct('.','a','.','b','()',{3},'.','c','{}',{2},'.','d','()',{1:3}))

returns

ans =

abc

And

subsrefbetter(s,substruct('.','a','.','b','()',{3},'.','c','{}',{2},'.','d','()',{'[1 end]'}))

should return

ans =

az

and

subsrefbetter(s,substruct('.','a','.','b','()',{3},'.','c','{}',{2},'.','d','()',{'end-2:end'}))

should return

ans =

xyz

The function `subsrefbetter` should accept both structures like created with `substruct`, and list of arguments like accepted by `substruct`.

That's all.

2 correct solutions
2 incorrect solutions

Last solution submitted on Aug 26, 2014