# discrte to softmax : Attempt to grow array along ambiguous dimension

3 views (last 30 days)
Tomasz Kaczmarski on 18 Feb 2020
Edited: Tomasz Kaczmarski on 21 Feb 2020
Hello
Im trying to run below function but constantly getting error
Attempt to grow array along ambiguous dimension.
Error in discrete2softmax (line 5)
s_m([1:sNum] + (inp'-1)*sNum) = 1;%problem
I know its caused becouse target is larger then array but please help how i should change my code to make it work
function s_m = discrete2softmax(inp,nmax)
% Convert discrete data into softmax
sNum = size(inp,1);
s_m = zeros(sNum,nmax);
s_m([1:sNum] + (inp'-1)*sNum) = 1;%problem
end

Show 1 older comment
Matt J on 20 Feb 2020
Tomasz Kaczmarski's comment moved here
thanks for explanation my arrays look like in workspace on left i suppose i should change 1 to 6 then ? but in this case im getting another error
Walter Roberson on 20 Feb 2020
Change the [] to ()
Tomasz Kaczmarski on 21 Feb 2020
thanks changing brackets improved code but i still got error
after more debbugging i think i know where my problem is
if s_m got mix of 0 and 1 it work well if i load 0 ( as on screen) only it fails
how to change function to move forward without failing if s_m got zeros only

Matt J on 19 Feb 2020
Edited: Matt J on 19 Feb 2020
I know its caused becouse target is larger then array but please help how i should change my code to make it work
Did you intend to add data at locations outside the bounds of s_m? If so, you would have to do so with 2D subscript indexing, rather than with a 1D linear index, e.g.,
>> s_m=rand(2)
s_m =
0.7088 0.9239
0.1146 0.7881
>> s_m(3,4)=1
s_m =
0.7088 0.9239 0 0
0.1146 0.7881 0 0
0 0 0 1.0000