小编Tan*_*iel的帖子

集群间和集群内距离

我找到了以下用于集群间和集群内距离的公式,但我不确定我是否理解它们的工作原理。

在此处输入图片说明

集群间距离

在此处输入图片说明

上面的公式中不应该有平方根吗?

集群间和集群内:

在此处输入图片说明 在此处输入图片说明

为什么第 j 个索引是从 N+1 开始的?而不是从 1 到 N2?

哪一个是正确的?或者有什么等价物吗?或者我应该为簇间距离寻找质心之间的距离?看起来比较简单。簇内距离呢?

我发现维基百科公式http://en.wikipedia.org/wiki/Cluster_analysis#Internal_evaluation更难理解。

我需要计算这个距离以便对颜色进行适当的分组以创建减少的调色板,所以我认为这些距离越准确,分组就越准确(公式而不是簇间距离的质心距离之间的距离)。向量是 3 维的(RGB 分量)。

cluster-analysis

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

如何创建B + Tree数据结构

我想了解如何创建一个B +树,其顺序(分支因子)为3,节点为3的最大条目数.我搜索了很多applet,但大多数都没有正常工作,而且这很好似乎不遵循我在维基百科上找到的这些步骤.

按照这些步骤

  1. 如果存储桶未满(插入后最多b-1个条目),请添加记录.
  2. 否则,拆分桶.
  3. 分配新叶子并将桶的一半元素移动到新桶.
  4. 将新叶的最小键和地址插入父级.

我相信新值的插入应该在第4步之前发生.是否有更好的描述版本的算法?

随着20,15,5,1,3,9,2,12作为输入,我得到了下面的树:

                                   |1|5| |

                          |2|5| |          |9| | |


                 |1|2| |    |3|5| |     |9| | |      |15|20| |
Run Code Online (Sandbox Code Playgroud)

根据这些步骤是否正确?任何人都可以指出一个小程序来验证这个例子吗?

java algorithm tree applet data-structures

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

使用Matlab计算数组中每行的频率

我有这个巨大的阵列.我在一个单独的数组中提取了唯一的行.现在我想创建一个向量来存储每个唯一行的出现.我怎么能这样做?尝试使用histc.我找到了tabulate,但只适用于矢量.

x=[62   29  64
    63  32  61
    63  32  61
    63  32  61
    63  31  62
    62  29  64
    62  29  64
    65  29  60
    62  29  64
    63  32  61
    63  32  61
    63  29  62
    63  32  61
    62  29  64
    ];

uA=unique(x)
[row, count] = histc(x,unique(x,'rows'))
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:Edge vector must be monotonically non-decreasing.在其他几次尝试中也遇到此错误.

arrays matlab unique

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

Memcpy Char指针

我有这个简单的程序,其中我想使用memcpy连接两个char指针,但我在memcpy行上获得访问冲突读取位置.

char *first = new char[10], *second=new char[10]; 
first="Hello ";
printf("\second: ");
scanf("%s",&second);
memcpy(first,second,strlen(second)+1);
printf ("Result: %s\n", first);
Run Code Online (Sandbox Code Playgroud)

因为复制到常量会让我违反,我尝试了这个:

char *first = new char[20], *second="world!"; 
printf("first: ");
scanf("%s",&first);
memcpy(first,second,strlen(second)+1);
printf ("Result: %s\n", first);
Run Code Online (Sandbox Code Playgroud)

这让我访问违规写作位置.我应该如何正确连接两个指针?

c c++ pointers char memcpy

2
推荐指数
2
解决办法
1万
查看次数

LINQ to XML 嵌套元素查询

我有以下 Questions.xml 文件

<?xml version="1.0" encoding="utf-8" ?>
<Questions>
  <Question>
    <Subject>ADO.NET</Subject>
    <Text>Which class should you use to manage multiple tables and relationships among them?</Text>
    <Answers>
      <Answer>DataRow</Answer>
      <Answer>DataView</Answer>
      <Answer>DataTable</Answer>
      <Answer>DataSet</Answer>
    </Answers>
  </Question>
</Questions>
Run Code Online (Sandbox Code Playgroud)

我想解析。以下是我的课程和查询。

public class Question
    {
        public string Text { get; set; }
        public string Subject { get; set; }

        public virtual List<Answer> Answers { get; set; }
    }

    public class Answer
    {
        public string Text { get; set; }
    }

    static void readQuestions()
    {
        var questions = from question …
Run Code Online (Sandbox Code Playgroud)

c# xml linq

2
推荐指数
1
解决办法
4811
查看次数

未解析的外部符号__report_rangecheckfailure

我有这个简单的程序,它会创建一个密码提示.我安装了Visual Studio 2012和2010.它适用于2010年,但在2012年我收到此错误:unresolved external symbol __report_rangecheckfailure referenced in function main.此外,我通过将所有内容从main移动到另一个函数来修改代码.这适用于两个版本.

某些库肯定存在一些问题,但哪一个,我该如何解决呢?谢谢.

#include <conio.h>
#include <iostream>

using namespace std;

int main()
{
    int key, i;
    char pwd[64];

    printf("Enter passphrase: ");

    key=getch();        
    i=0;
    while (key!=13)
    {
        cout<<"*";      
        pwd[i++]=key;
        key=getch();
    }

    pwd[i++]='\0';

    cout<<strlen(pwd)<<endl;
    for (i=0; i<strlen(pwd); i++)
        cout<<pwd[i]<<endl;

    getch();
}
Run Code Online (Sandbox Code Playgroud)

c++ linker-errors visual-studio-2010 visual-studio-2012

2
推荐指数
1
解决办法
6645
查看次数

使用rgb2ind减少matlab中的颜色数量

我正在做一些图像处理,我需要减少图像的颜色数量.我发现rgb2ind可以这样做并编写以下代码段:

clc
clear all
[X,map] = rgb2ind(RGB,6,'nodither');
X = rgb2ind(RGB, map);
rgb=ind2rgb(X,map);
rgb_uint8=uint8(rgb*255+0.5);
imshow(rgb_uint8);
Run Code Online (Sandbox Code Playgroud)

但输出看起来像这样,我怀疑它只有6种颜色.

在此输入图像描述

matlab colors image-processing

2
推荐指数
1
解决办法
1209
查看次数

具有可变数量参数的扩展方法

我创建了这个具有扩展方法的辅助类 RichTextBoxHelper,我想编写另一个 WriteLine 方法或重写这个方法(哪个解决方案最好),以便能够在它下面显示的函数中使用它。谢谢你。

public static class RichTextBoxHelper
{
    public static void WriteLine(this RichTextBox txtLog, object line)
    {
        txtLog.AppendText(line + Environment.NewLine);
    }
}

private void selectToolStripMenuItem_Click(object sender, EventArgs e)
{
    var vehicles = new List<Tuple<string, string, int>>
    {
        Tuple.Create("123","VW",1999),
        Tuple.Create("234","Ford",2009),
        Tuple.Create("567","Audi",2005),
        Tuple.Create("678","Ford",2003),
        Tuple.Create("789","Mazda",2003),
        Tuple.Create("999","Ford",1965)
    };

    var fordCars = vehicles.Where(v => v.Item2 == "Ford")
                         .Select(v => new Car
                         {
                             VIN = v.Item1,
                             Make = v.Item2,
                             Year = v.Item3
                         });

    foreach (var item in fordCars)
        txtLog.WriteLine("Car VIN:{0} Make:{1} Year:{2}", item.VIN, item.Make, item.Year); …
Run Code Online (Sandbox Code Playgroud)

c# parameters extension-methods winforms

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

信号系统调用

我有这个代码片段,我甚至读了几次信号系统调用,我仍然不明白为什么程序停止第四次我按CTRL-C,而不是第三次.提前致谢!

#include <stdio.h>
#include <signal.h>
#include <unistd.h>

int i=0;

void handler(int sig)
{
    i++;
    printf("CTRL-C\n");
    if (i==3)
        signal(SIGINT, SIG_DFL);
}

int main()
{
    signal(SIGINT,handler);
    while (1)
    {
        printf("Hello world!\n");
        sleep(1);
    }

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我读到信号系统调用不可移植,所以如果我提到我使用的是最新版本的Ubuntu(14.04),它可能会有所帮助.

c linux signals system-calls handler

0
推荐指数
1
解决办法
133
查看次数