小编Agn*_*kas的帖子

R中的聚类分析:确定最佳聚类数

作为R的新手,我不太确定如何选择最佳数量的聚类来进行k均值分析.绘制下面数据的子集后,适合多少个群集?如何进行聚类dendro分析?

n = 1000
kk = 10    
x1 = runif(kk)
y1 = runif(kk)
z1 = runif(kk)    
x4 = sample(x1,length(x1))
y4 = sample(y1,length(y1)) 
randObs <- function()
{
  ix = sample( 1:length(x4), 1 )
  iy = sample( 1:length(y4), 1 )
  rx = rnorm( 1, x4[ix], runif(1)/8 )
  ry = rnorm( 1, y4[ix], runif(1)/8 )
  return( c(rx,ry) )
}  
x = c()
y = c()
for ( k in 1:n )
{
  rPair  =  randObs()
  x  =  c( x, rPair[1] )
  y  = …
Run Code Online (Sandbox Code Playgroud)

r cluster-analysis k-means

422
推荐指数
6
解决办法
24万
查看次数

真实使用X-Macros

我刚学会了X-Macros.您看过X-Macros的实际用途?他们什么时候成为工作的合适工具?

c macros c-preprocessor x-macros

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

从void函数返回

从函数返回更正确的方法是:

void function() {
  // blah some code
}
Run Code Online (Sandbox Code Playgroud)

要么

void function() {
  // blah some code
  return;
}
Run Code Online (Sandbox Code Playgroud)

第二种方式的理由:

  1. 它更清楚地表达了开发者的意图.
  2. 它有助于在预编译时检测函数结束:

假设你有这样的场景 - 你有很多函数,你必须在这些函数的末尾注入一些代码.但由于某些原因,您不希望/或无法修改如此大量的功能.你能做些什么?Returnmacro发挥作用,例如:

#include<stdio.h>

#define MAX_LINES 1000
#define XCAT(a,b) a##b
#define CAT(a,b) XCAT(a,b)
#define return returns[__LINE__] = 1;\
        if (returns[__LINE__])\
           {printf("End of function on %d line.\n",__LINE__);}\
        int CAT(tmp,__LINE__); \
        if ((CAT(tmp,__LINE__)=returns[__LINE__], returns[__LINE__] = 0, CAT(tmp,__LINE__)))\
              return

static int returns[MAX_LINES];


void function1(void) {
    return;
}

void function2(void) {
    return;
}

int main()
{
    function1();
    function2(); …
Run Code Online (Sandbox Code Playgroud)

c function void

60
推荐指数
3
解决办法
13万
查看次数

在C中使用null语句

null语句的典型用法是什么

;
Run Code Online (Sandbox Code Playgroud)

在C?

我知道它基本上用于跳过编译器所期望的表达式,但是在这里我只对这种用例的实际例子感兴趣.

c

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

GCC返回ARM体系结构中调用函数的地址

我很好奇为什么__builtin_return_address()在ARM中不支持除0之外的其他参数?这是一个问题,不知何故你不能从ARM堆栈中推断出调用函数地址?或者是其他东西 ?

谢谢

c stack gcc arm

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

Floyd-Steinberg用于像素着色器的抖动替代品

我知道Floyd-Steinberg抖动算法不能用像素着色器实现,因为该算法是严格顺序的.但也许存在一些高度并行的抖动算法,它的视觉输出类似于Floyd-Steinberg算法?

所以问题是 - 什么是抖动算法适合在像素着色器(最好是GLSL)上实现,输出质量(非常)类似于Floyd-Steinberg抖动?

BTW.允许多次传递算法,直到不超过2次传递,并且这些传递之间的CPU开销很小.

有任何想法吗 ?

编辑:
我需要从24位颜色到21位颜色抖动.
(也就是说 - 我需要将8位/通道转换为7位/通道.)

编辑2 也许我没有很好地解释问题.所以我会尝试扩展一些确切的问题.问题是这个 - 考虑一下我们有这张照片:
替代文字
我们有上面的图片,但用抖动算法处理:
替代文字
现在这是测试你的抖动对我有好处的程序:
1.在Photoshop中将这些图片作为一张图片加载2层.
2.选择"图层"混合模式为"差异".
3.对图层执行"合并可见"操作,以获得一个图层.
4.执行操作=>图像/调整/均衡

之后你必须得到这样的图像:
替代文字
正如你所看到的那样 - 单调红色的中间像素根本没有抖动.左右图像区域的抖动也有点不同.尝试用这种行为重建抖动算法.

image-processing glsl dithering pixel-shader

11
推荐指数
2
解决办法
5251
查看次数

随机整数中最可能的位

我做了这样的实验 - 用C和C#制作了1000万个随机数.然后计算设置随机整数中15位的每个位的次数.(我选择了15位,因为C仅支持随机整数0x7fff).

我得到的是这个: 在此输入图像描述
我有两个问题:

  1. 为什么有3个最可能的位?在C案件位8,10,12是最有可能的.最有可能是C#比特6,8,11.

  2. 似乎C#最可能的位大多移位2个位置,然后与C最可能位进行比较.为什么是这样 ?因为C#使用其他RAND_MAX常量还是什么?


我的测试代码C:

void accumulateResults(int random, int bitSet[15]) {
    int i;
    int isBitSet;
    for (i=0; i < 15; i++) {
        isBitSet = ((random & (1<<i)) != 0);
        bitSet[i] += isBitSet;
    }
}

int main() {
    int i;
    int bitSet[15] = {0};
    int times = 10000000;
    srand(0);

    for (i=0; i < times; i++) {
        accumulateResults(rand(), bitSet);
    }

    for (i=0; i < …
Run Code Online (Sandbox Code Playgroud)

c c# random

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

为什么计算1 /(n*log(n)-n)打破了计算机?

最近我偶然发现了问题,Wolfram表示和不同,但Mathematica给出了一个数值.它说它1/(n * log(n) - n)不是可求的(或者在数学上不会收敛到正确).有趣的是,我们仍然可以尝试以数字方式计算总和,尽管它是"不可求和"的事实.Mathematica给出〜6.1作为数字答案.

好.我想,让我们尝试在该系列求和的PHP脚本中重现该数字(或类似的东西).我的代码是:

$formula = function ($n) {return 1/($n * log($n) - $n);};
$n=2;
$sum=0;

while(true) {
    $term_n = $formula($n);
    $sum += $term_n;
    if ($n++ % 100000 == 0) {
        if ($sum > 5.8)
            usleep(1000);
        echo "n=".number_format($n-1)."; sum={$sum}; error={$term_n}\n";
    }
}
Run Code Online (Sandbox Code Playgroud)

我的算法计算了答案,直到5.866然后发生了两件事之一:

  1. 无论是Ubuntu崩溃/冻结
  2. 或Linux杀死了我的计算脚本进程

这发生在大约3400万次迭代之后.

后来我检查了CPU负载在计算更多系列术语方面的变化情况.

现在,有趣的部分:在大约2200万次迭代中,核心显示难以在它们之间切换任务: 在此输入图像描述

后来,在大约3300万次迭代中,核心达到了不可逆转的地步 - 他们拒绝工作: 在此输入图像描述

问题是 - 5.866计算机崩溃的总和有什么特别之处? - 鉴于迭代次数N非常大(仅为3400万),第N项也非常小(仅为1.7E-9),所以没有理由存在奇点.

php math sum inverse

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

我已经包含了string.h但是当我尝试使用它时,如下所示我得到错误

我已经包含了string.h但是当我尝试使用它时,如下所示我得到错误

#include<string.h>
std::string something;
Run Code Online (Sandbox Code Playgroud)

这里std会被标记,它会说**错误C2039:'string':不是'std'的成员**

但在我的程序的其他部分它工作,只在某些地方我确实得到这个错误

c++ string std member

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

Linux模拟到Windows GetAsyncKeyState()

是否有一些Linux模拟的Windows函数GetAsyncKeyState()?或者可能存在一些返回的异步函数 - 键盘缓冲区是否为空?

谢谢.

c linux fedora keyboard-input

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