我不知道你们每次编写代码以及不同级别的测试时如何测试代码:单元测试,集成测试,......
例如,对于刚编写的函数的单元测试,你是否编写了另一组main函数和Makefile来测试它?或者您是否修改项目的主要功能以测试功能.或者你只是在调试下运行你的项目,并停止调用函数的位置并修改其参数的值?
我相信一定有一些方便和常见的方式,大多数人都在使用,只有我不知道.
mex在Matlab中调用文件(用c/c ++编写)通常很容易加速某些计算.然而,根据我的经验,Matlab的真正瓶颈是数据绘图.创建句柄非常昂贵,即使您只更新句柄数据(例如,XData,YData,ZData),这可能需要很长时间.更糟糕的是,由于Matlab是一个单线程程序,因此不可能同时更新多个图.
因此我的问题是:是否有可能编写一个Matlab GUI并调用C++(或其他一些可并行化的代码)来处理绘图/可视化?我正在寻找一个可以在Windows,Mac和Linux上运行的跨平台解决方案,但任何让我开始使用任何操作系统的解决方案都非常感谢!
我找到了一个似乎使用Matlab 语法的C++库,plot()但我不确定这是否会加快速度,因为我担心如果我在Matlab的figure()窗口中绘图,事情可能会再次放慢速度.
我很感激以前处理过这种情况的人的任何意见和反馈!
编辑:显然,我已经描述了我的代码,瓶颈是绘图(十几个包含大量数据的面板).
EDIT2:为了获得赏金,我需要一个真实的生活,最简单的工作实例如何做到这一点 - 暗示性的答案对我没有帮助.
EDIT3:关于要绘制的数据:在最简单的情况下,考虑20个线图,需要每秒更新一次,如1000000个数据点.
编辑4:我知道这是一个巨大的积分,但我从来没有说过这个问题很简单.我不能忽略某些数据点,因为在实际绘制它们之前无法评估哪些点是重要的(数据采样时间为亚毫秒时间分辨率).事实上,我的数据是使用商业数据采集系统获得的,该系统附带数据查看器(用c ++编写).该程序可以直观地显示多达60个线图,甚至超过1000000个数据点.
编辑5:我不喜欢当前讨论的目的.我知道对我的数据进行二次采样可能会加快速度 - 然而,这不是问题所在.这里的问题是如何让ac/c ++/python/java接口与matlab一起工作,以期通过直接与硬件交谈(或使用任何其他技巧/方式)加快绘图速度
好吧,我通过相关问题,我阅读了JDK 1.7的源代码,但我找不到答案.
在这个问题中,我想完全忽略fillInStackTrace.
从JDK 1.4 initCause()开始,添加了方法.例如,当您使用核心反射来调用该方法时,您会收到InvocationTargetException,其中包含具有目标异常的原因.
当我看到这个功能时,我也开始在这样的场景中使用它
try {
//contains some code that can throw new IOException();
}
catch(IOException e){
throw new RuntimeException(e);
}
Run Code Online (Sandbox Code Playgroud)
所以,我抓住了一个异常,我还没准备好在这里处理它并且我重新抛出新的异常,其中我有原始异常作为原因.在一些scenarious而不是RuntimeException,但我的自定义异常被使用,所以有时我也调用e.getCause(),以便在外部块中正确处理此异常.
这是JDK 1.7之前的情况.我应该何时何地使用addSuppressed()?我应该将上面的代码更改为
try {
//contains some code that can throw new IOException();
}
catch(IOException e){
RuntimeException re= new RuntimeException(e.getMessage());
re.addSuppressed(e);
throw re;
}
Run Code Online (Sandbox Code Playgroud)
作为奖励问题,为什么不addSuppressed()返回Throwable作为initCause()确实允许throw (RuntimeException)new RuntimeException().initCause(e);?例如,为什么我不能这样做?:
try {
//contains some code that can throw new IOException();
}
catch(IOException e){
throw …Run Code Online (Sandbox Code Playgroud) 有谁知道使用Google Cloud Machine Learning与Google Cloud Engine中的虚拟机实例相比有什么区别?
我正在使用Keras和Python 3并且感觉GML更受限制(使用python 2.7,旧版本的TensorFlow,必须遵循给定的结构......).我猜他们在GCE中使用GML而不是VM的好处,但我想知道它们是什么.
python machine-learning google-compute-engine tensorflow google-cloud-ml-engine
我有一个整数矩阵,我需要用-5替换2的所有外观.最有效的方法是什么?我按照下面的方式制作,但我相信有更优雅的方式.
a=[1,2,3;1,3,5;2,2,2]
ind_plain = find(a == 2)
[row_indx col_indx] = ind2sub(size(a), ind_plain)
for el_id=1:length(row_indx)
a(row_indx(el_id),col_indx(el_id)) = -5;
end
Run Code Online (Sandbox Code Playgroud)
而不是循环II寻找类似的东西:a(row_indx,col_indx)= -5,这是行不通的.
输入未转义的字符序列最简单的方法是std::string什么?
代替
std::string st = "C:\\program files\\myFile.txt";
Run Code Online (Sandbox Code Playgroud)
类似于:(由于转义字符而无法正常工作).
std::string st = "C:\program files\myFile.txt";
Run Code Online (Sandbox Code Playgroud) 我在一个项目中工作.项目的一部分包括将OpenCV的HOG人物检测器与摄像机流式传输相结合.
目前,它正在使用相机和基本的HOG检测器(CPP detectMultiScale - > http://docs.opencv.org/modules/gpu/doc/object_detection.html).但是不能很好地工作......检测非常噪音,算法不是很准确......
为什么?
我的相机图像是640 x 480像素.
我正在使用的代码片段是:
std::vector<cv::Rect> found, found_filtered;
cv::HOGDescriptor hog;
hog.setSVMDetector(cv::HOGDescriptor::getDefaultPeopleDetector());
hog.detectMultiScale(image, found, 0, cv::Size(8,8), cv::Size(32,32), 1.05, 2);
Run Code Online (Sandbox Code Playgroud)
为什么不能正常工作?什么需要提高准确性?是否需要一些特定的图像尺寸?
PS:你知道一些精确的人检测算法,更快,并在cpp中发展?
我有一个双列矩阵M,包含一堆间隔的开始/结束索引:
startInd EndInd
1 3
6 10
12 12
15 16
Run Code Online (Sandbox Code Playgroud)
如何生成所有区间索引的向量:
v = [1 2 3 6 7 8 9 10 12 15 16];
Run Code Online (Sandbox Code Playgroud)
我正在使用循环进行上述操作,但我想知道是否有更优雅的矢量化解决方案?
v = [];
for i=1:size(M,1)
v = [v M(i,1):M(i,2)];
end
Run Code Online (Sandbox Code Playgroud)