我打算使用Matlab在其状态空间上绘制随机过程的概率分布。 状态空间可以由150x150矩阵的下三角表示。 请参阅该图(无网格的冲浪图)以获取特定时间点的概率分布。

在此处输入图片说明

正如我们所看到的,图中有很高的对称性,但是由于它被绘制为正方形矩阵,因此看起来有点怪异。 我们可以变换出看起来很完美的矩形。 我的问题是,如何使用Matlab将下部三角形部分绘制/变换为等边三角形?

===============>>#1 票数:1 已采纳

此功能应为您完成工作。 如果没有,请告诉我。

function matrix_lower_tri_to_surf(A)
%Displays lower triangle portion of matrix as an equilateral triangle
%Martin Stålberg, Uppsala University, 2013-07-12
%mast4461 at gmail

siz = size(A);
N = siz(1);
if ~(ndims(A)==2) || ~(N == siz(2))
    error('Matrix must be square');
end

zeds = @(N) zeros(N*(N+1)/2,1); %for initializing coordinate vectors
x = zeds(N); %x coordinates
y = zeds(N); %y coordinates
z = zeds(N); %z coordinates, will remain zero
r = zeds(N); %row indices
c = zeds(N); %column indices

l = 0; %base index
xt = 1:N; %temporary x coordinates
yt = 1; %temporary y coordinates

for k = N:-1:1
    ind = (1:k)+l; %coordinate indices
    l = l+k; %update base index

    x(ind) = xt; %save temporary x coordinates

    %next temporary x coordinates are the k-1 middle pairwise averages
    %calculated by linear interpolation through convolution
    xt = conv(xt,[.5,.5]);
    xt = xt(2:end-1);

    y(ind) = yt; %save temporary y coordinates
    yt = yt+1; %update temporary y coordinates

    r(ind) = N-k+1; %save row indices
    c(ind) = 1:k; % save column indices
end

v = A(sub2ind(size(A),r,c)); %extract values from matrix A
tri = delaunay(x,y); %create triangular mesh

h = trisurf(tri,x,y,z,v,'edgecolor','none','facecolor','interp'); %plot surface
axis vis3d; view(2); %adjust axes projection and proportions
daspect([sqrt(3)*.5,1,1]); %adjust aspect ratio to display equilateral triangle

end %end of function

  ask by wdg translate from so

未解决问题?本站智能推荐:

2回复

Matlab:如何为冲浪图的单个单元着色

我试图基于Z函数值来区分冲浪图的单个单元格的颜色,特别是:X,Y是(nxm)矩阵并定义一个表面; Z是一个(nxm),其某些特定点设置为3或4或5 我正在尝试制作一个冲浪图,其中具有3,4或5值的单个网格单元的颜色与所有其他曲面网格单元的颜色不同。 这是我得到的代码和图像(在此特定
1回复

如何在MATLAB中组合3D冲浪图和Comet3图?

我正在编写代码以绘制围绕3d地球模型(使用surf()和set()函数创建)的卫星(使用comet3()函数创建)的圆形轨道。 问题是我似乎找不到在同一个情节中将它们组合在一起的方法。 我已经尝试过使用hold on and hold off,但这似乎也不起作用。 我在下面粘贴MATLAB
1回复

如何在Matlab轴上设置特定且不规则的刻度线?

使用Open-BCI,我得到了要在matlab上绘制的值(以255Hz采样)。 但是,我希望x轴上的特定刻度(我认为这是正确的术语)以匹配采集协议。 它遵循6-2-6-2秒的模式。 我的意思是 : 我想绘制整个信号,然后更改X轴刻度以仅显示那些值。 但是我在matlab上挣扎,所
1回复

MATLAB:根据不规则数据点绘制3D曲面

假设我有一个x坐标向量,一个y坐标矩阵和相应的z值: 如何在相应的x和y值给出的点上绘制由z值确定的曲面? 第一个x值定义矩阵第一行中所有y值的x值,第二个x值定义第二行中的所有值,依此类推。 (如果答案是griddata我还需要一些其他指针。如何将数据转换为正确的格式?)
1回复

在没有特定点的情况下绘制网格/冲浪图

我想画一个网格图。 随着功能的发展,它总是在输入矩阵内绘制所有条目。 但是,现在我希望某个条目不要绘制出来,例如: 其中“ 0”是我不想绘制的条目。 使用mesh(X,Y,Z)或surf(X,Y,Z)后,仍然显示高度= 0的点 有什么办法掩盖这一点吗? 谢谢!
2回复

Matlab箱图

我想创建一个准箱形图,如所附报告的第15/16页所示。 comisef.eu/files/wps031.pdf 理想情况下,我只想显示报告中的中位数,最大值和最小值。 我也希望与报告中显示的间距相似。 目前,我有两个矩阵,其中存储了所有必需的值,但不知道如何在matlab
1回复

冲浪图无法正确显示颜色

这是我得到的图 我对图表的值都接近1 。 因此,我希望该图主要为红色 。 为什么以蓝色显示? 这个颜色条是什么意思? 该图实际上是什么意思? 值是 第1至10栏
1回复

Matlab:绘制数组,使每个值都具有随机形状和颜色图

在Matlab中: 如何修改plot(x,y,'o'),其中x = 1:10且y = ones(1,10),以使图中的每个点都具有随机形状? 以及如何从方案中选择颜色,其中x = 1处的值是最暗的蓝色,x = 10处的值是红色(即某种热图)? 不用循环就可以做到吗? 也许我应
1回复

从不规则数据绘制曲面

我从散乱的数据集中制作填充的轮廓或曲面图。 与其他Qs的主要区别在于数据不是凸的。 内圈为空。 我用 制作表面图。 但是,正如您所看到的,内圈被填充。
3回复

Matlab图始终可见

我写了一个matlab函数,可以在图形上做很多事情。 现在,问题在于在程序终止执行之前不会显示图形,但是我希望在程序运行时以所有修改实时,实时地显示图形。 我该怎么做? figure('visible','on')不会排序任何效果,也不会设置set()命令。 程式码片段: