I’ve the following function

```
function fun(dx,x,p,t)
dx[:,:] .= mat1*x + mat2*x
end
```

Here, I’d like to scale `mat1*x + mat2*x`

by the values present in a vector `scale`

.

In MATLAB I would do `(1./scale).*(mat1*x + mat2*x)`

. I’m not sure how element wise scaling is done in Julia for performing matrix vector multiplication.

`mat1 is of size (10 x 10) , x : (10 x 1) scale : (10 x 1)`

Suggestions?

@ptoche Could you please help me with this?

Example:

```
using DifferentialEquations, BenchmarkTools
mat1=[
1 -2 1 0 0 0 0 0 0 0;
0 1 -2 1 0 0 0 0 0 0;
0 0 1 -2 1 0 0 0 0 0;
0 0 0 1 -2 1 0 0 0 0;
0 0 0 0 1 -2 1 0 0 0;
0 0 0 0 0 1 -2 1 0 0;
0 0 0 0 0 0 1 -2 1 0;
0 0 0 0 0 0 0 1 -2 1;
];
mat2 = [
1 -1 0 0 0 0 0 0 0 0;
0 1 -1 0 0 0 0 0 0 0;
0 0 1 -1 0 0 0 0 0 0;
0 0 0 1 -1 0 0 0 0 0;
0 0 0 0 1 -1 0 0 0 0;
0 0 0 0 0 1 -1 0 0 0;
0 0 0 0 0 0 1 -1 0 0;
0 0 0 0 0 0 0 1 -1 0;
];
x0 = [1.0,0,0,0,0,0,0,0,0,0]
scale= [1 2 3 2 3 1 2 3];
saveat = 0:0.01:5
function fun(dx,x,p,t)
dx[1,:] .= 0
dx[2:9,:] .= (1/scale)*(mat1*x + mat2*x)
dx[10,:] .= 2*(x[end-1] - x[end])
end
prob = ODEProblem(fun,x0,(0.0,5.0))
sys = modelingtoolkitize(prob)
fastprob = ODEProblem(sys,x0,(0.0,5.0),jac=true)
# Explicit RK Methods
@btime sol = solve(fastprob,Tsit5()) # 16.700 μs (245 allocations: 40.28 KiB)
```

doesn’t run successfully.

Should I do `vecdot(1/scale, mat1*x+mat2*x)`

?