作为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) 我刚学会了X-Macros.您看过X-Macros的实际用途?他们什么时候成为工作的合适工具?
从函数返回更正确的方法是:
void function() {
// blah some code
}
Run Code Online (Sandbox Code Playgroud)
要么
void function() {
// blah some code
return;
}
Run Code Online (Sandbox Code Playgroud)
第二种方式的理由:
假设你有这样的场景 - 你有很多函数,你必须在这些函数的末尾注入一些代码.但由于某些原因,您不希望/或无法修改如此大量的功能.你能做些什么?Return
并macro
发挥作用,例如:
#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) null语句的典型用法是什么
;
Run Code Online (Sandbox Code Playgroud)
在C?
我知道它基本上用于跳过编译器所期望的表达式,但是在这里我只对这种用例的实际例子感兴趣.
我很好奇为什么__builtin_return_address()
在ARM中不支持除0之外的其他参数?这是一个问题,不知何故你不能从ARM堆栈中推断出调用函数地址?或者是其他东西 ?
谢谢
我知道Floyd-Steinberg抖动算法不能用像素着色器实现,因为该算法是严格顺序的.但也许存在一些高度并行的抖动算法,它的视觉输出类似于Floyd-Steinberg算法?
所以问题是 - 什么是抖动算法适合在像素着色器(最好是GLSL)上实现,输出质量(非常)类似于Floyd-Steinberg抖动?
BTW.允许多次传递算法,直到不超过2次传递,并且这些传递之间的CPU开销很小.
有任何想法吗 ?
编辑:
我需要从24位颜色到21位颜色抖动.
(也就是说 - 我需要将8位/通道转换为7位/通道.)
编辑2
也许我没有很好地解释问题.所以我会尝试扩展一些确切的问题.问题是这个 - 考虑一下我们有这张照片:
我们有上面的图片,但用抖动算法处理:
现在这是测试你的抖动对我有好处的程序:
1.在Photoshop中将这些图片作为一张图片加载2层.
2.选择"图层"混合模式为"差异".
3.对图层执行"合并可见"操作,以获得一个图层.
4.执行操作=>图像/调整/均衡
之后你必须得到这样的图像:
正如你所看到的那样 - 单调红色的中间像素根本没有抖动.左右图像区域的抖动也有点不同.尝试用这种行为重建抖动算法.
我做了这样的实验 - 用C和C#制作了1000万个随机数.然后计算设置随机整数中15位的每个位的次数.(我选择了15位,因为C仅支持随机整数0x7fff
).
我得到的是这个:
我有两个问题:
为什么有3个最可能的位?在C
案件位8,10,12
是最有可能的.最有可能是C#
比特6,8,11
.
似乎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) 最近我偶然发现了问题,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
然后发生了两件事之一:
这发生在大约3400万次迭代之后.
后来我检查了CPU负载在计算更多系列术语方面的变化情况.
现在,有趣的部分:在大约2200万次迭代中,核心显示难以在它们之间切换任务:
后来,在大约3300万次迭代中,核心达到了不可逆转的地步 - 他们拒绝工作:
问题是 - 和5.866
计算机崩溃的总和有什么特别之处? - 鉴于迭代次数N非常大(仅为3400万),第N项也非常小(仅为1.7E-9),所以没有理由存在奇点.
我已经包含了string.h但是当我尝试使用它时,如下所示我得到错误
#include<string.h>
std::string something;
Run Code Online (Sandbox Code Playgroud)
这里std会被标记,它会说**错误C2039:'string':不是'std'的成员**
但在我的程序的其他部分它工作,只在某些地方我确实得到这个错误
是否有一些Linux模拟的Windows函数GetAsyncKeyState()?或者可能存在一些返回的异步函数 - 键盘缓冲区是否为空?
谢谢.