jjcabrera20 wrote on 12/01/2011 04:02:47 AM:

> Hello everyone in the forum
> For introducing myself I would say I have a basic knowledge of R.
> Now I am intended to implement a flood algorithm using R. I have some 
MatLab
> experience doing these, and as an example to explain more or less what I
> want, I have a m code to calculate the slope from a Digital elevation 
model:
> 
> slope=zeros(row,col);
> for i=2:row-1
>     for j=2:col-1
>        dzdx=(raster(i,j+1)-raster(i,j-1))/(2*res);
>        dzdy=(raster(i+1,j)-raster(i-1,j))/(2*res);
>        slope(i,j)=sqrt(dzdx^2+dzdy^2);
>     end
> end;
> 
> The question is to know how to do the similar procedure on R. All
> suggestions are welcome
> Thanks
> 
> All best,
> 
> Jorge
> PD:I am using R on windows system 64 bits


If I am interpreting your code correctly (I don't use MatLab myself), 
something like this should give you the same result in R:

# example matrix of heights
raster <- matrix(runif(20, 10, 30), nrow=4, ncol=5)

# example resolution
res <- 8.5

# dimensions of matrix
drast <- dim(raster)

# for every non-boundary point in the matrix,
# calculate the distances between its adjacent columns (dzdx) and rows 
(dzdy)
dzdx <- raster[2:(drast[1]-1), 3:drast[2]] - raster[2:(drast[1]-1), 
1:(drast[2]-2)]
dzdy <- raster[3:drast[1], 2:(drast[2]-1)] - raster[1:(drast[1]-2), 
2:(drast[2]-1)]

# calculate the slope from these distances and the resolution
slope <- sqrt(dzdx^2 + dzdy^2) / (2*res)


Jean
	[[alternative HTML version deleted]]

