我正在尝试生成/模拟一组合成/模拟数据集,以在matlab中生成合成血流图像。但我不知道如何或从哪里开始...
我知道我应该使用网格函数但是我如何制作它以便它可以在时间维度上?
如果有人能帮助/指导我,我将非常感激。我想生成一个大小为25x25x10x4的数据集。这是X x Y x t x V.图像应该类似于:
或者像这样:
提前谢谢你!
答案 0 :(得分:3)
使用您喜欢的线条表示(极性,线性,无论如何)并随机生成线条的参数。例如。如果您选择y = mx + c
,则会随机生成m
和c
。现在您已经定义了行use this SO method以在图像上绘制它。
他们看起来像2D高斯。以下列方式使用mvnpdf
。
[X Y] = meshgrid(x_range,y_range);
Z = reshape( mvnpdf([X(:) Y(:)],MU,SIGMA) ,size(X));
imagesc(Z);
使用一些随机生成的MU
和SIGMA
,MU
位于x_range
和y_range
。例如。 x_range = -3:0.1:3;y_range = x_range;
和
MU =
0.9575 0.9649
SIGMA =
1.2647 0.3760 0.3760 1.0938
答案 1 :(得分:1)
为了补充@Jacob非常具体的答案,你需要一个4D MxNxTxV
矩阵。在此,根据帖子,MxN
是每个图像的维度,T
是时间维度,V是每个时间帧的通道或样本数量(RGB为3或者> 3)对于任何光谱图像)。
根据@Jacob的建议,将rand()
替换为下面的generate_image()
,即生成所需结构类型的随机样本的函数:
M = 25; N = 25;
T = 10; V = 4;
DataSet1 = zeros(M,N,T,V);
DataSet2 = zeros(M,N,T,V);
for t = 1:T
for v = 1:V
DataSet1(:,:,t,v) = randn(M,N);
DataSet2(:,:,t,v) = randn(M,N);
end
end