小编Joh*_*son的帖子

推荐用于R中非常大的数据集处理和机器学习的软件包

似乎R真的设计用于处理它可以完全进入内存的数据集.对于无法拉入内存的超大型数据集,建议使用哪些R软件包进行信号处理和机器学习?

如果R只是错误的方法,我会接受其他强大的免费建议(例如scipy,如果有一些很好的方法来处理非常大的数据集)

signal-processing r machine-learning bigdata

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

寻找一个好的C/C++小波库进行信号处理

有谁知道一个好的C/C++小波库用于信号处理?

信号是浮点值或双值,而不是int值.

c c++ signal-processing wavelet

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

C#强制执行语句的顺序

我的问题是关于C#中执行保证的顺序(大概是.Net).我给出了一些我知道要与之比较的Java示例.

对于Java(来自"Java Concurrency in Practice")

无法保证一个线程中的操作将按程序给出的顺序执行,只要在该线程内无法检测到重新排序 - 即使重新排序对其他线程是明显的.

所以代码

  y = 10;
  x = 5;
  a = b + 10;
Run Code Online (Sandbox Code Playgroud)

实际上可以指定a = b + 10在指定y = 10之前

在Java中(来自同一本书)

当线程A启动由同一个锁保护的同步块时,线程A在同步块之前或之前执行的所有内容都对线程B可见.

所以在Java中

 y = 10;
 synchronized(lockObject) {
     x = 5;
 }
 a = b + 10;
Run Code Online (Sandbox Code Playgroud)

保证y = 10和x = 5都在a = b + 10之前运行(我不知道y = 10是否保证在x = 5之前运行).

C#代码对C#语句的执行顺序有什么保证

 y = 10;
 lock(lockObject) {
     x = 5;
 }
 a = b + 10;
Run Code Online (Sandbox Code Playgroud)

我特别感兴趣的答案可以提供明确的参考或其他一些非常有意义的理由,因为这样的保证难以测试,因为它们是关于允许编译器做什么的,而不是它每次都做什么以及因为当它们失败时当线程以错误的顺序命中时,你将很难重现间歇性错误.

.net c# java multithreading synchronization

13
推荐指数
2
解决办法
2118
查看次数

以编程方式创建directx 11纹理,三种不同方法的优缺点

MSDN文档解释说,在DirectX 11有多种方法以编程方式填充的DirectX 11质地:

(1)使用默认使用纹理创建纹理,并使用内存中的数据对其进行初始化

(2)使用动态用法创建纹理,使用DeviceContext Map获取指向纹理内存的指针,写入它,然后使用Unmap指示你已完成(此时我猜它被复制到gpu)

(3)使用分段用法创建纹理,并按照与动态纹理相同的步骤进行,但是通过调用ID3D11DeviceContext.CopyResource来使用此分段纹理依次填充(非不可变)默认或动态纹理.

然而,文档并没有解释每种方法的优缺点,而且我对directx还是一个新手,所以对我来说一点也不清楚.

在directx 11中以编程方式创建纹理的每种方法的优缺点是什么?

旁注:我已经读过,在分段纹理的上下文中,从gpu 回不是缓冲的,所以你必须做自己的双缓冲.但我不知道这是否准确,是否适用于使用分段纹理(甚至真正意味着什么)写作.

第二方面注意: Map方法文档说它获取了一个指向子资源中数据的指针,并拒绝GPU访问该子资源.当GPU想要访问其底层数据已被Map调用的纹理时,它会做什么?失速?(我问,因为这听起来像是我询问的利弊的一部分)

directx textures directx-11

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

libjpeg和.Net jpeg编解码器在单色数据上真的有很大不同吗?

我使用了大量的单色图像数据,今天早上我注意到libjpeg和.Net jpeg编解码器处理单色数据的方式之间似乎存在显着差异.看来使用libjpeg以任意质量设置保存并使用默认.Net jpeg编解码器打开的单色图像实际上只加载了16种不同的灰度,所有中间色调都呈现为点状.

这是由libjpeg保存并由.net加载的平滑渐变的直方图

编解码器冲突的直方图影响梯度

直方图应该是完全水平的.

这里是一个(放大)渐变样本的样本(它应该是一个非常平滑的过渡) 在此输入图像描述

这应该是从左边的灰色85到右边的灰色136的平滑过渡,但实际上只渲染了4个灰度,以进行过渡.

我的问题是我疯了,如果不是这个编解码器差异到底有多远?如果您在不同的程序中使用这两个库,是否有一个很好的解决方法?

我不是要责怪编解码器,只是指出看似差异的东西.我注意到这一点,我知道使用libjpeg创建的图像,假设这是一个质量设置问题,尝试使用faststone图像缩放器来创建测试图像并获得相同的结果,尝试使用irfanview并再次获得相同的结果.由于这两个程序都必须使用一些jpeg库,我倾向于认为它们也使用libjpeg并且存在真正的编解码器冲突.

在加载方面,我遇到了使用我自己的.net代码和使用Paint.net加载图像的相同结果.

最后,这是一个正常分辨率的示例,因此您可以下载并自行尝试.在一些程序中加载它会给你一个很好的渐变(例如你的浏览器),但用你自己的.Net代码加载它,或者Paint.Net会给你一个抖动的渐变,就像上面使用16种灰度渲染一样.

在此输入图像描述

有没有人更多地了解这一点,它有多远,有什么好的解决方法?

.net jpeg image image-processing libjpeg

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

directx中许多不同复杂对象的典型渲染策略?

我正在学习directx.它在如何做事方面提供了大量的自由,但可能不同的状态不同表现不同,并且它对于表现良好的使用模式提供的指导很少.

使用directx时,通常需要在每次渲染时多次交换一堆新数据吗?

使用它的最明显,也可能是非常低效的方式就是这样.

Stragety 1

在每个渲染上

  1. 加载模型0(包括纹理)的所有内容并渲染它(IASetVertexBuffers,VSSetShader,PSSetShader,PSSetShaderResources,PSSetConstantBuffers,VSSetConstantBuffers,Draw)

  2. 加载模型1的所有内容(包括纹理)并渲染它(IASetVertexBuffers,VSSetShader,PSSetShader,PSSetShaderResources,PSSetConstantBuffers,VSSetConstantBuffers,Draw)

  3. 等等...

我猜你可以提高效率,如果要加载的最大东西都是专用插槽,例如,如果模型0的纹理真的很复杂,不要在每一步重新加载它,只需将它加载到插槽1中并保留它那里.当然,因为我不确定DX11中每种类型的寄存器有多少,所以这很复杂(任何人都可以指出这方面的文档吗?)

Stragety 2

选择一些纹理槽用于加载,其他纹理槽用于永久存储最复杂的纹理.

只有一次

将最复杂的模型,着色器和纹理加载到专用于永久存储的插槽中

在每个渲染上

  1. 使用您预留的用于加载和渲染的插槽加载模型0不存在的所有内容(IASetVertexBuffers,VSSetShader,PSSetShader,PSSetShaderResources,PSSetConstantBuffers,VSSetConstantBuffers,Draw)

  2. 使用您预留用于加载和渲染的插槽加载模型1中尚未存在的所有内容(IASetVertexBuffers,VSSetShader,PSSetShader,PSSetShaderResources,PSSetConstantBuffers,VSSetConstantBuffers,Draw)

  3. 等等...

策略3 我不知道,但上面的内容可能都错了,因为我真的很陌生.

有效渲染directx(特别是DX11)以使其尽可能高效的标准策略是什么?

directx graphics rendering directx-11

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

SQL行返回顺序

直到最近我每天开始使用它时,我才很少使用SQL.我注意到如果没有使用"order by"子句:

  1. 选择表的一部分时,如果选择整个表,则返回的行看起来与它们出现的顺序相同
  2. 从连接中选择返回的行的顺序将由连接的最左侧成员确定.

这种行为是最常见的数据库(MySql,Oracle,PostgreSQL,Sqlite,Sql Server)中可以依赖的标准事物吗?(我甚至不知道是否可以在sqlite中真正依赖它).如果是这样的话,它是多么严格(例如,如果一个人使用"分组依据",各个团体是否都有这种排序)?

mysql sql-server sqlite oracle postgresql

9
推荐指数
3
解决办法
1067
查看次数

libsvm准确吗?

随着StompChicken的更正(我错误地计算了一个点产品,呃!)答案似乎是肯定的.我已经使用具有相同正确结果的预先计算的内核测试了相同的问题.如果你使用libsvm StompChickens清楚,有组织的计算是一个非常好的检查.

原始问题: 我即将开始在libSVM中使用预先计算的内核.我注意到 弗拉德对一个问题的回答,我认为确认libsvm给出了正确的答案是明智的.我从非预先计算的内核开始,只是一个简单的线性内核,在3维空间中有2个类和3个数据点.我用过这些数据

1 1:3 2:1 3:0
2 1:3 2:3 3:1
1 1:7 3:9
Run Code Online (Sandbox Code Playgroud)

调用svm-train -s 0 - t 0包含的模型文件

svm_type c_svc
kernel_type linear
nr_class 2
total_sv 3
rho -1.53951
label 1 2
nr_sv 2 1
SV
0.4126650675419768 1:3 2:1 3:0 
0.03174528241667363 1:7 3:9 
-0.4444103499586504 1:3 2:3 3:1 
Run Code Online (Sandbox Code Playgroud)

但是,当我手动计算解决方案时,这不是我得到的.有谁知道libsvm是否有错误,或者是否有人可以比较注释,看看他们是否得到了与libsvm相同的功能?

系数a1,a2,a3通过LIBSVM退换应该是使这些值

a1 + a2 + a3 - 5*a1*a1 + 12*a1*a2 - 21*a1*a3 - 19*a2*a2/2 + 21*a2*a3 - 65*a3*a3 …
Run Code Online (Sandbox Code Playgroud)

opencv machine-learning computer-vision libsvm

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

在C#中,如何获取本地计算机名称列表,例如在Windows资源管理器中查看网络的名称

有很多关于获取本地机器的名称和IP地址的问题以及一些关于获取LAN上其他机器的IP地址的问题(并非所有机器都得到正确回答).这是不同的.

在Windows资源管理器中,如果我在侧栏上选择"网络",我会看到按机器名称列出的局域网上的本地计算机(无论如何,在Windows工作组中).如何在C#中以编程方式获取相同的信息?

c# windows lan workgroup

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

for循环不会迭代

在MATLAB中,以下for循环:

for i = [1:100]' 
    %'// Do something, such as disp(i)
end
Run Code Online (Sandbox Code Playgroud)

显然不是通过迭代实现的,而是i变成矩阵[1 2 3 ... 100]并且"循环"仅在该矩阵上执行一次i.您可以通过打印值i或其他跟踪信息来验证这一点.只有一次通过循环.

是否有可能强制MATLAB进行真正的循环?我问的原因是上面的方法适用于许多情况,但是当你有需要运行的嵌套循环时会更加痛苦.

示例:
如果您认为在循环上进行实际迭代,则以下代码将无法执行您期望的操作:

for i = outlier
    data(i) = median(data(i-100:i+100))
end
Run Code Online (Sandbox Code Playgroud)

人们可以预期,在每个异常值指数中,这将用从i-100到i + 100的数据的中值替换数据(i),但事实并非如此.实际上,中位数返回在您关注的所有范围的集团上计算的单个值,并且每个数据(i)点都被该单个值替换.

matlab for-loop

7
推荐指数
2
解决办法
2515
查看次数