53 views (last 30 days)

The function is:

x = -10:10;

y = -5:5;

for j = 1:21

for i = 1:11

f(i) = - 20 * exp( - 0.2 * sqrt( ( 1/2 ) * sum( x(j)^2 + y(i)^2 ) ) );

end

z(j,:) = f;

end

Thanks!

Andrei Bobrov
on 2 Mar 2018

Edited: Andrei Bobrov
on 2 Mar 2018

% MATLAB >= R2016b

z = - 20 * exp( - 0.2 * sqrt( .5 * sum( x(:).^2 + y(:)'.^2 ) ) );

% MATLAB <= R2016a

[xx,yy] = ndgrid(x,y);

z = - 20 * exp( - 0.2 * sqrt( .5 * sum( xx.^2 + yy.^2 ) ) );

per isakson
on 2 Mar 2018

Edited: per isakson
on 2 Mar 2018

Yes, try this

>> max( cssm, [], 1 )

ans =

0 0 0 0 0 0 0 0 0 0 0

>>

where

function dz = cssm()

x = -10:10;

y = -5:5;

f = nan(1,11);

z = nan(21,11);

%

for j = 1:21

for i = 1:11

f(i) = - 20 * exp( - 0.2 * sqrt( ( 1/2 ) * sum( x(j)^2 + y(i)^2 ) ) );

end

z(j,:) = f;

end

vectorized version

x02 = repmat( reshape( x, [], 1 ), 1,length(y) );

y02 = repmat( y, length(x),1 );

z02 = - 20 * exp( - 0.2 * sqrt( ( 1/2 ) * ( x02.^2 + y02.^2 ) ) );

%

dz = abs( z02 - z );

end

on R2016a

btw: Isn't true that sum in this case has no effect?

Opportunities for recent engineering grads.

Apply TodayFind the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!
## 0 Comments

Sign in to comment.