小编EBH*_*EBH的帖子

Matlab:如何自定义聚类代码作为多级聚类?

我想聚集大量的数据记录.我正在处理的数据是字符串类型.群集过程需要很长时间.
让我们假设我想将一组电子邮件数据记录集群到集群中,同一个人写的电子邮件被分配到同一个集群(考虑到一个人可能以不同的方式写下他/她的名字).
我想执行多阶段群集:

  • 基于名称的第一阶段聚类,如果两个记录之间的名称距离小于阈值,我们会考虑这些聚类......
  • 数据记录基于其他属性(名称除外)进入群集的第二阶段.

计算成对距离.现在我正处于聚类阶段.我想使用以下代码进行dbscan群集:

function [IDX, isnoise] = dbscan_strings(X,epsilon,MinPts)
C = 0;
n = size(X,1); 
IDX = zeros(n,1);
D = pdist2(X,X,@intersection);
visited = false(n,1);
isnoise = false(n,1);
for i = 1:n
    if ~visited(i)
        visited(i) = true;
        Neighbors = RegionQuery(i);
        if numel(Neighbors)<MinPts
            % X(i,:) is NOISE
            isnoise(i) = true;
        else
            C = C+1;
            ExpandCluster(i,Neighbors,C);
        end
    end
end

function ExpandCluster(i,Neighbors,C)
    IDX(i) = C;
    k = 1;
    while true
        j = Neighbors(k);
        if ~visited(j)
            visited(j) = true;
            Neighbors2 = …
Run Code Online (Sandbox Code Playgroud)

matlab cluster-analysis multistage

5
推荐指数
1
解决办法
355
查看次数

在 Matlab 中设置图例的标题

以下代码是我能找到的最简单、最完整且可验证的示例。我的真实情况要复杂得多:

x = 1:0.1:10;
y = sin(x);

subplot 211
plot(x,y)
[leg,att] = legend('show');
title(leg,'my title')
leg.Title.Visible = 'on';

subplot 212
plot(x,y)
leg = legend('show');
title(leg,'my title')
Run Code Online (Sandbox Code Playgroud)

这导致:

图例标题

正如您可以清楚地看到的,上部图例标题有问题。不知何故,询问att图例的输出会干扰其标题。首先,由于某种原因,它使其不可见,但这已经在上面的代码中解决了。

主要问题在于它的位置 - 它似乎没有这样的属性,所以一旦设置我就无法移动它。

我在Undocumented Matlab中读到了这篇文章,我自己可以想到一些类似的技巧(比如使用text图例的位置),但是我的情况非常复杂,而且我已经配置了很多图例并且每个图中都有几个轴。因此,我更喜欢一个简单且有效的解决方案,它依赖于图例标题的原始功能。

我使用Matlab 2016a。

matlab legend matlab-figure

5
推荐指数
1
解决办法
5279
查看次数

MATLAB在两个轮廓图之间填充区域

我有两个轮廓图,我希望能够从一个图像中的一个轮廓填充到另一个图像中的相同高度轮廓。

在此处输入图片说明

在该图中,您可以看到两种颜色的两条线-这些是我要填充的线条,它们的颜色与线条相同(尽管最好是半透明的)。这些的代码如下

test = repmat(repelem(0:6,2),10,1);
test1 = test(:,2:end-1);
test2 = test(:,1:end-2);
contour(test1,1:5);
hold on;
contour(test2,1:5);
Run Code Online (Sandbox Code Playgroud)

我确实认为,也许我可以在每个仓位上创建具有所需高度的另一幅图像,并进行某种处理contourf,但是如果将来线条交叉(这很可能会做到),那将是一个问题。在那种情况下,我希望它们交叉的区域是交叉的颜色的组合。

matlab contour fill matlab-figure

5
推荐指数
1
解决办法
441
查看次数

将饼图保存为pdf时未知的白线

当我将饼图保存为pdf时,pdf具有未知的白线.为了简化问题,我将代码修改为最通用的形式,如下所示.

clc;
h=pie(1);
%set the pie chart color to black
h(1).FaceColor = 'k';
Run Code Online (Sandbox Code Playgroud)

我选择使用黑色的原因是白色线条与黑色背景形成鲜明对比.请参阅随附的pdf图.

当节能-饼图-AS-PDF

我还发现在此链接上存在相同问题的类似线程:将饼图保存为pdf时出现奇怪的工件.此时没有提供解决方案.

我的系统配置:macOS Sierra版本10.12.Matlab R2016b.

欢迎任何输入.谢谢.

pdf matlab matlab-figure pie-chart

5
推荐指数
1
解决办法
295
查看次数

如何使用bwareaopen删除小对象?

我有一个图像,我想删除大白色物体上的黑色像素.我使用bwareaopen(BW,P)函数,但它只删除孔对象而不是黑色像素.我尝试了不同的P价值但又失败了.

为什么bwareopen不能删除白色物体上的黑色像素以及如何删除它们?

图片:

在此输入图像描述

matlab image-processing

4
推荐指数
1
解决办法
1504
查看次数

如何在Matlab中将原点设置为轴的中心

当我在Matlab中绘制函数f(x)时,例如正弦函数,我得到的图是这样的:

在此输入图像描述

我想以一种相当不同的方式绘制它,例如,用Mathematica生成:

在此输入图像描述

注意轴的位置(连同刻度线)以及x和y标签的位置.

任何帮助将非常感激.

matlab plot matlab-figure

4
推荐指数
2
解决办法
6533
查看次数

Conv2在opencv中

我正在进行图像处理,需要在c ++ OpenCV中知道相当于matlab的conv2.
我找到了这个链接,但它不符合我的要求.

我面临的问题是我需要用2-D双数组卷积Mat图像,这不是上面链接中给出的情况.

matlab代码是:

img = conv2(img1,Mx,'same')
Run Code Online (Sandbox Code Playgroud)

哪里

Mx = {  
  {0, 0, 0, 0, 0, 0} ,   
  {0, -0.0003, -0.0035, 0, 0.0035, 0.0003} ,   
  {0, -0.0090, -0.0903, 0, 0.0903, 0.0090} , 
  {0, -0.0229, -0.2292, 0, 0.2292, 0.0229} ,   
  {0, -0.0090, -0.0903, 0, 0.0903, 0.0090} ,   
  {0, -0.0003, -0.0035, 0, 0.0035, 0.0003}  
};
Run Code Online (Sandbox Code Playgroud)

谢谢.

c++ matlab opencv

4
推荐指数
1
解决办法
1757
查看次数

创建具有断开/离散线的图

这是我的代码:

for p = 1:length(id_unique)
    h=figure;
    hold on
    j = 1;
    for i = 1:1:length(id)
        if id_unique(p)==id(i)
            h=plot([startdate(i),enddate(i)],[j,j],'ok-');
            hold on
            j = j + 1;        
        end
    end
    grid on
    hold off
    savefig([plotname,'.fig'])
    print(plotname,'-djpeg','-r300')
    close
end

% id:           integer vector containing 50000 values
% id_unique:    sorted unique values from vector 'id'
% startdate:    datetime vector containing 50000 dates
% enddate:      datetime vector containing 50000 dates
Run Code Online (Sandbox Code Playgroud)

id ”向量中的每个元素/值都暗示一个事件,其中事件的开始日期和结束日期在“ startdate ”和“ enddate ”向量中的相应位置可用。因此,事件id(1)startdate(i ) 中具有开始日期,在 enddate(i) 中具有结束日期。

该程序从“ …

matlab plot matlab-figure

3
推荐指数
1
解决办法
220
查看次数

将数字列表操作为列或单独列表以便在Python中进行绘图

我是Python的新手,所以如果这个很容易,我很抱歉.(这对我来说似乎很容易,但我正在努力......)

我有一个从我已经完成的IV扫描中从Keithley SMU 2400中踢回的数字列表,并且得到的结果列表如下:

[v0, c0, t0, v1, c1, t1, v2, c2, t2, ...]
Run Code Online (Sandbox Code Playgroud)

该列表似乎是一个数字列表(由于PyVisa的query_ascii_values命令,不是ascii值列表).

如何将这些解析为数字列(对于csv或类似的输出)或三个单独的列表,以便在matplotlib中进行绘图.

我最喜欢的输出最后会与此相似:

volts = [v0, v1, v2, v3...]
currents = [c0, c1, c2, c3...]
times = [t0, t1, t2, t3...]
Run Code Online (Sandbox Code Playgroud)

这应该可以更容易在matplotlib中绘图(或输出到csv文本文件).

请注意,我的v0,v1等只是我的名字,它们目前是数字.

我会在Matlab中尝试过类似这样的:

volts = mydata(1:3:length(mydata));
Run Code Online (Sandbox Code Playgroud)

(通过从1开始计算每三个项目来调用索引)

感谢您的想法和帮助!还有 - 像这样的简单数据调整是否有任何好的资源,我应该得到一份副本?

python numpy list matplotlib

3
推荐指数
1
解决办法
92
查看次数

如何在MATLAB中找到每个3D数组切片的最大值和位置?

计算3D阵列的每个"切片"的最大值及其相应的索引的最快方法是什么?

arrays matlab max

3
推荐指数
1
解决办法
524
查看次数