用法:STDSHADE(Amatrix,Alpha,Acolor,F,SMTH)
绘制来自数据矩阵的绘制均值和标准偏差(STD),每行是观察。STD可以更改为代码中平均值(SEM)的标准错误。SEM / STD显示为阴影。
- ACOLOR定义了使用的颜色(默认为红色)
- f分配已使用的x轴(默认为1的步骤)。
- Alpha定义着色的透明度(默认是没有阴影和黑色均线)
- SMTH定义平滑因子(默认是没有光滑的)
Simon Musall(2021)。STDSHADE.(//www.tatmou.com/matlabcentral/fileexchange/29534-stdshade),Matlab中央文件交换。检索到。
写的代码很好。
感谢您共享@simon。
请使用CNN,LSTM和MLP访问我的时间序列预测码。
//www.tatmou.com/matlabcentral/fileexchange/69506-time-series-prediction.
嗨凯尔,
在多个数据集上绘制的最简单方法是创建一个图,然后重复调用函数。
要确保每个绘图都获得唯一的颜色,您可以事先创建颜色值矩阵。您需要最新版本的工作 - 我刚刚达到了略微的更新来支持数字颜色值。金宝app
这是一个例子:
数字
nrsamples = 10;
CMAP =线条(NRSAMPLES);
对于x = 1:nrsamples
aline(x)= stdshade(rand(50,100)* x,0.5,cmap(x,:));
坚持,稍等;
结尾
传奇(aline);轴广场
嗨Simon,我能够通过X轴上的索引值绘制单轴功能,但如何通过它多个XY数据集。例如,我有10个强制位移数据样本,我想要使用这个功能。
谢谢你的响应!
嗨西蒙,
谢谢,这是非常有帮助的:)
蒙娜
嗨蒙娜,
以下是一个示例,用于为您可以传递给Legend命令的每个条目获取行对象。
>>
>> [aline(1),afill(1)] = stdshade(兰特(50,100)* 1,0.5,'g');
>>坚持
>> [aline(2),afill(2)] = stdshade(rand(20,100)* 5,0.5,'r');
>>传奇(aline,'data1','data2')
希望这可以帮助,
西蒙
嗨西蒙,
在您的榜样中,我如何制作传奇?到目前为止,我每行得到两个条目,一个用于平均值,一个用于STD。
谢谢,
莫妮卡
嗨Joana,
更改平均线的最简单方法是通过更改行对象“剪辑”的属性。它包含平均线的所有属性,您可以调整颜色和样式以满足您的需求。
这是一个例子:
[Lineout,Fillout] = STDShade(Rand(50,100));
lineout.Color = [0.5 0.5 0.5 0.75];灰色均线的百分比变化颜色和透明度(第4个值)
lineout.linestyle =' - 。'均值改变平均线的风格
希望这可以帮助。
西蒙
而且如果我想绘制平均线点缀或虚线,我怎么能戴帽子。?
嗨西蒙
是否可以选择灰色颜色,就像通过RGB色比一样。
我尝试了[0,0,0] + alpha方法,但这不起作用。
嗨Joana,
我刚上传了一个新版本,返回剪辑的句柄和阴影。您可以将其中任何一个人带到“传说”的效果。
这是一个例子:
>>
>> [aline(1),afill(1)] = stdshade(兰特(50,100)* 1,0.5,'g');
>>坚持
>> [aline(2),afill(2)] = stdshade(rand(20,100)* 5,0.5,'r');
>>传奇(aline,'data1','data2')
希望这可以帮助,
西蒙
嗨西蒙
我正在使用绘制3个变量的函数,因此它也绘制着阴影的STD。当我将图例放置时,它会显示所有6个变量的颜色。
我正在使用这个命令图例('','var1',''','var2','''','var3')来显示只有3个变量,但直到它显示线条但空的文本框。
我试图使用“句柄可见性”,但也不起作用。
有什么可以建议的。
嗨pouya,
为了平滑工作,输入的“SMTH”需要奇数。我稍微调整纠正这个内部,所以如果您下载它应该工作的新版本。
否则只需使用SMTH的奇数。
最好的,
西蒙
亲爱的西蒙,
我不明白如何设置平滑。每当我设置SMTH的数字大于1时,在第32行出现错误时出现错误,其中您使用填充命令,指出“矩阵尺寸必须同意”。我应该怎么办?
感谢你付出的努力。
嗨Joana,
在绘制随机生成的数据时功能是否有效(Amatrix = Rand(15,818888);)?
如果是这样,可能会有一些关于造成问题的数据的数据。常见原因是矩阵中的NAN或INF值。尤其是INF值导致问题,因为标准偏差对于填充命令无法处理的那些列是NaN。您可以通过删除包含NAN或INF的列或用0替换它们(这将改变该列中的标准差)来解决此问题。
希望这可以帮助,
西蒙
嗨西蒙,
我正在使用此函数来绘制5x818888样本的数据。它只是绘制平均线而不是std,我正在使用stdshade(amatrix,0.8,'g')命令。
想想到为什么这么做,?
哎呀,制作了一个错字。我绘制了我的标准偏差:
绘图(q_mean + q_std,' - b');
绘图(q_mean-q_std,' - b');
plot(r_mean + r_std,' - r');
plot(r_mean-r_std,' - r');
得到了一些r和q的交换。我的问题保持不变
嗨Rasmus,
如果标准偏差绘制,则应存在阴影存在。也许你已经将Alpha(第二输入)设置为0?在这种情况下,阴影将是完全透明的。
这里是具有随机数的矩阵的示例:第一输入是数据,第二是用于透明度的alpha,第三是颜色,第四是X轴上的相应值,如果需要,第四是平滑因子。
a = rand(500);
a(:,200:300)= a(:,200:300)* 2;
数字;STDSHADE(A,0.5,'G',1:尺寸(A,2),5);
有人可以在那个他们工作的地方写一个例子吗?我不确定输入。我可以获得标准偏差绘制在我的含义周围,但我无法在平均值和std dev之间得到阴影
很高兴听到它为你工作!
要调整X轴,您可以创建一个向量f(第4个输入到函数),用于为每个数据点定义x-position。对于你描述的是,你可以做 - srate = 2400;f = 1 / srate:1 / srate:2799393 / srate;- 获得正确的矢量。
最好的,
西蒙
嗨西蒙,
谢谢。它对我来说非常好。
彼此问题,现在,在x轴上,它绘制到2799393的比例。我想用采样频率将其分成2400.因此x轴将为0-1166。我怎样才能做到这一点。
嗨naina,
该函数应执行您在Point1中描述的内容。它将绘制2799393点的一行,这是15个科目的平均值。阴影将显示跨对象的标准偏差。如果您想要另一个等度量,如均值或方差的标准错误,则可以相应地更改线#26。
要绘制两个不同的数据集,可以打开一个数字并在第一个和第二函数调用之间使用'on')'在同一轴上绘制它们。绘制它们时刚使用不同的颜色。要获得差异,您可以使用“valin1 = nanmean(data1,2)来计算自己的含义;”这为您提供了数据集“data1”中的含义的含义。然后只是做某事'dataDiff = valic1 - mean2;'要获得它们之间的差异并在同一图中使用绘图命令以可视化它。
希望这可以帮助,
西蒙
嗨西蒙,
1:我的数据以15x2799393的形式,其中每行是来自一个特定主题的数据。我想绘制所有受试者的含义和每个受试者数据的可变性。即,阴影区域应该描绘可变性或换句话说每个受试者数据的模糊曲线。我想知道这个程序是否已经这样做了,如果不是,那么我需要做些什么变化。?
2:我有两组数据,每个尺寸相同(15x2799393),我需要单独绘制两个数据集的平均值,并绘制差异。我怎样才能做到这一点。
嗨EITAN,
要避免此问题,我已经更新了该函数并添加了一个替换了平滑函数的BoxCar过滤器。
希望这将为您修复它。
@Anoop:抱歉迟到的回复。该函数以阴影返回两个数据点,因为您的矩阵有两列。似乎您想要通过转换输入矩阵来平均过度的第二维度。
尝试使用stdshade(a',0.2,'k')
对Matlab 2019a没有为我工作
我的输入矩阵是双倍的,我一直在收到此错误消息 -
用于输入参数的未定义函数'shoveld',用于“双”的输入参数。
试图挖一点但没有解决问题
我错过了什么?
谢谢
你好,
我正在遇到一个问题,将x轴右设置。其他事情似乎工作正常。但X轴仅在1到2.之间绘制,您可以帮忙吗?
以下是我正在使用的数据。我想用阴影的置信区间绘制散点图。
a = [146.146 154.006
144.498 148.602
117.563 145.987
108.53 113.418
109.366 119.78
128.15 132.
115.02 120.584
122.88 125.69
140.109 150.013
99.347 100.333
112.768 113.58
104.246 114.114
];
当我尝试时
STDSHADE(A,0.2,'K'),
X轴介于1到2.之间,我无法理解如何使绘图与我的数据相同。我想我需要给出f的价值,但我不清楚。你能帮我解决这个吗?
Thanx Simon,它对我很好。还有一个问题,我可以绘制时间序列不同的长度x = 10x95 y = 10:95和z = 10x145
第二我仍然想知道这段代码中的...'f,smth''
它似乎最简单的是重复调用函数,并使用“hold”命令用不同颜色绘制多个系列。
尝试此代码:
h =图;
X = Cumsum(Randn(10,95),2);
Y = Cumsum(Randn(10,95),2)* 2;
Z = Cumsum(Rand(10,95),2)/ 2;
stdshade(x,0.5,'b');
持有(H.Children,'On');
STDSHADE(Y,0.5,'R');
STDSHADE(Z,0.5,'G');
轴广场;XLIM([1 95]);
希望有帮助!
嗨Simon Musall,thanx为您的回复,我想用不同颜色的stdshade绘制多个系列,但它不适用于我
STDSHADE(Amatrix,Alpha,Acolor,F,SMTH),但我不知道,但我理解如何改变alpha,acolor,f,smth值
因为在函数中它不起作用
我有x = 10x95,y = 10x95和z = 10x95数据,我想用不同的着色颜色绘制这3个变量,
嗨asher,
很高兴能帮助你。如果使用10x95矩阵,则线条横跨行的标准偏差定义,因此所有10只能有1个。
你能澄清你想要在绘制10行时想要的阴影吗?
嗨,可以有人举例说明使用此代码;因为它没有绘制多行。
我绘制了10x95数据......我给了我单线阴影
我想绘制10行阴影
这是有很大帮助!谢谢!
嗨罗伯特,很高兴你喜欢它!自从我生成这个数字以来,已经很久了,我没有那个代码了。它只使用'hinal / vline'命令绘制行(//www.tatmou.com/matlabcentral/fileexchange/1039-hine-and-vline.)和西北地点的传说。
漂亮的功能,西蒙。想知道您是否可以提供用于您的示例的脚本?
嗨Thorsten,
谢谢你的建议。显然,轴也可以在Win7下消失。我想,这是一个原因是拉伸到填充行为(在改变视角时也被禁用)。我想到了将此修复添加到代码中,但不幸的是它会产生新的问题。做小板时。如果有人有轴问题,因此似乎最有意义地找到一个产生一个符合需求的数字的个性化解决方案。我发现更改轴宽高比以禁用填充填充:
//www.tatmou.com/help/techdoc/visualize/f4-24991.html.
嗨......谢谢,工作伟大,看起来很棒!
除了:在Mac(和Linux)上,介绍阴影区域后轴消失。(这似乎与OpenGL渲染器连接,用于低于1)的alpha值。通过在调用STDShade之后在某处添加此行来更改视角的工作是稍微改变视角:
Camva(GCA,Camva +(Camva / 1000))
谢谢你的建议。
如果我理解你的更改,我不肯定。将大小更改为FIR维数时,它会给您提供观察量而不是实际长度。当我尝试改变它时,代码作为f中断并且观察的均值不再相同。
您是否尝试过使用Amatrix'作为输入?也许你正在使用不同的矩阵结构。
有用文件,但可以进行一些更改,因为它在发起时不起作用:
如果存在('f','var')== 0 ||Isempty(F);
f = 1:大小(Amatrix,1);
结尾
上面的代码返回了列的大小。
和
Amean = smooth(amatrix,smth)';
上面的代码已经使用了纳米,这计算了整个数据集的平均值,导致仅绘制的点。