# Developers Planet

fR3ZNO February 2016

### Matlab - calculating condition numbers for hilbert matrices

Okay, first off I feel silly for asking this question since it seems like the answer should be simple but I can't figure it out.

I have a vector n:

``````n=[2:13]
``````

I would like to pass this vector through elementwise so that it returns another vector with the calculated values:

``````condition=cond(hilb(n))
``````

hilb(n) returns a Hilbert matrix with the dimension n. cond() then calculates the condition number, which is a scalar value. Currently, Matlab is returning condition as a single value using the first value from n, which is 2 instead of a vector that is equal in length to n.

I am aware of using .* , sin.() and other commands to compute things elementwise, but I can't find how to do this with a function such as this.

Stewie Griffin February 2016

You can't pass a vector to `hilb` like that, unfortunately. What you should do is use a loop, or simpler, `arrayfun`:

``````condition = arrayfun(@(x) cond(hilb(x)), n)
``````

Note that `arrayfun` is just a disguised loop, so it offers no performance benefit compared to explicitly writing the loop.

``````condition = zeros(1,numel(n));
for ii = 1:numel(n)
condition(ii) = cond(hilb(n(ii)));
end
``````

Keep in mind that `hilb` is an ill-conditioned matrix, thus your values will get very high (`cond(hilb(13))=8.3042e+19`. This means your resulting vector will look like: `1.0e+19* 0.0000 0.0000 ... 0.0017 8.3042`. If you use `format short e`, then you'll get to see the values of each individual element: `1.9281e+01 5.2406e+02 ... 8.3042e+19`.