This is because if the current Julia indexing rules. See #5949
<https://github.com/JuliaLang/julia/issues/5949> for a discussion in a
closed issue about changing it.
This looks ugly, but works
*A[k,:,:] = squeeze(A[k,:,:],1) ./ S;*
Regards Ivar
kl. 15:45:26 UTC+2 onsdag 27. august 2014 skrev David Smith følgende:
>
> Can anyone tell my why the code below fails?
>
> Why is the error reporting an incorrect size for the right-hand side?
>
> Is this a gotcha of the broadcast rules?
>
> Is the only solution to boost S to a 1 x n x n array?
>
> I prefer to avoid looping, if possible.
>
> Thanks!
>
>
> function f(n)
> A = rand(3,n,n);
> S = rand(n,n);
> for k = 1:size(A,1)
> A[k,:,:] = A[k,:,:] ./ S;
> end
> return A
> end
>
> julia> f(10)
> ERROR: DimensionMismatch("tried to assign 10x10x10 array to 1x10x10
> destination")
> in throw_setindex_mismatch at operators.jl:233
> in setindex_shape_check at operators.jl:258
> in setindex! at multidimensional.jl:72
> in f at none:5
>