matlab随机生成地形
时间: 2023-08-20 09:25:11 浏览: 216
在MATLAB中可以使用Perlin噪声算法来生成随机地形。Perlin噪声可以生成自然的随机形状,可以用于生成山脉、河流、湖泊等地形特征。以下是一个简单的示例代码:
```matlab
% 设置地形大小
width = 100;
height = 100;
% 设置噪声参数
freq = 10; % 噪声频率
octaves = 6; % 噪声层数
persistence = 0.5; % 噪声持续性
% 生成Perlin噪声地形
noiseMap = zeros(height, width);
for y = 1:height
for x = 1:width
noise = 0;
amplitude = 1;
for o = 1:octaves
nx = x / width * freq * o;
ny = y / height * freq * o;
noise = noise + interpNoise(nx, ny) * amplitude;
amplitude = amplitude * persistence;
end
noiseMap(y, x) = noise;
end
end
% 显示地形图像
imagesc(noiseMap);
colormap(gray);
% 平滑地形
smoothMap = imgaussfilt(noiseMap, 5);
imagesc(smoothMap);
colormap(gray);
% 插值噪声函数
function noise = interpNoise(x, y)
x0 = floor(x);
x1 = x0 + 1;
y0 = floor(y);
y1 = y0 + 1;
tx = x - x0;
ty = y - y0;
v00 = randn(y0, x0);
v01 = randn(y1, x0);
v10 = randn(y0, x1);
v11 = randn(y1, x1);
nx0 = lerp(v00, v10, tx);
nx1 = lerp(v01, v11, tx);
noise = lerp(nx0, nx1, ty);
end
% 线性插值函数
function r = lerp(a, b, x)
r = a + x .* (b - a);
end
```
这个代码会生成一个随机的地形图像,可以根据需要调整参数来得到不同的地形形状。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)