小编Nor*_*ren的帖子

MATLAB滑块步骤行为

我在MATLAB 2012a中使用GUIDE创建了一个滑块小部件.我希望它控制一个显示图像的轴,其中滑块逐步执行它们的序列.

我在m文件的一部分中为Min,Max和SliderStep设置了滑块的属性.

sliderMin = 1;
sliderMax = size(result); % this is variable
sliderStep = [1, 1]; % major and minor steps of 1

set(handles.slider, 'Min', sliderMin);
set(handles.slider, 'Max', sliderMax);
set(handles.slider, 'SliderStep', sliderStep);
set(handles.slider, 'Value', sliderMin); % set to beginning of sequence
Run Code Online (Sandbox Code Playgroud)

在滑块回调中,我已经验证了Min,Max和SliderStep的设置是否正确.

sliderMin = get(hObject, 'Min') % correct
sliderMax = get(hObject, 'Max') % correct
sliderStep = get(hObject, 'SliderStep') % correct
currentSliderStep = get(hObject, 'Value') % correct, 1 at start
Run Code Online (Sandbox Code Playgroud)

但是,当我单击滑块的箭头时,我只在开始和结束之间跳转.每次将正确的Min,Max,SliderStep和Value(尽管只有1或sliderMax)打印到命令窗口时.我无法以1的增量步进以查看序列内部的图像.

matlab user-interface slider matlab-guide

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

断言从模拟对象构造函数抛出的异常

假设:VS2010,.NET 4,C#,NUnit,Moq

我是TDD的新手,在完成一个项目时遇到了这个问题.

鉴于课程:

public abstract class MyFileType
{                
    public MyFileType(String fullPathToFile)
    {
        if (!File.Exists(fullPathToFile))
        {
            throw new FileNotFoundException();
        }

        // method continues

    }
}
Run Code Online (Sandbox Code Playgroud)

我试图使用该方法测试它:

[Test]
[ExpectedException(typeof(System.IO.FileNotFoundException))]
public void MyFileType_CreationWithNonexistingPath_ExceptionThrown()
{
    String nonexistingPath = "C:\\does\\not\\exist\\file.ext";
    var mock = new Mock<MyFileType>(nonexistingPath);
}
Run Code Online (Sandbox Code Playgroud)

测试失败,NUnit报告从未抛出异常.

我确实在NUnit文档中找到了一个关于断言与异常断言的部分,但这些示例似乎并不像我想要做的那样.我仍然开始使用NUnit和Moq,所以我可能会以错误的方式解决这个问题.

更新:

为了帮助阐明此示例使用抽象类的原因,它是一系列文件类型的基类,其中只有子类型之间的数据加载和处理会有所不同.我最初的想法是将open/setup的逻辑放入基类中,因为它对所有类型都是相同的.

c# tdd nunit unit-testing moq

10
推荐指数
2
解决办法
9205
查看次数

修复损坏的SVN存储库

我在Mac OS X Lion(10.7.2 11C74)上使用svnX(0.9.13),而且我认为它似乎是一个损坏的SVN存储库.我在网站上搜索了类似的问题并找到了一,但没有一个描述当你无法从存储库完成结账时如何恢复.我也没有最新的工作目录.

具体错误是:

svn:读取表示时校验和不匹配:
预期:[哈希]
实际:[不同哈希]

如果警报被取消(唯一选项),结账将继续到结束.乍一看,大多数文件似乎都在那里,但是当我运行应用程序时,显然有一个版本的混杂.存储库位于USB闪存驱动器上,这可能是腐败的根源.我是访问这些文件的唯一用户,他们在一周内没有被触及并且处于工作状态.

任何有关如何进行的建议将不胜感激.

svn version-control

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

处理大量图像数据的策略

技术堆栈:C#/ .NET 4/WinForms

背景:

我正在工作的项目是一系列图像堆栈的可视化应用程序.具体地,每个图像堆栈与网格对齐,在任何时间显示相同的图像,并且处理功能应用于当前在视图中的图像.图像堆栈本身为150-300 MB,每个映像为512KB-1MB.典型的数据集将包含~100个图像堆栈.

题:

为了尝试使用这些数据,我使用了几种技术:

  • 内存映射文件:在应用程序启动时从磁盘加载映像堆栈
  • 允许使用不安全代码的x64下的编译:显然,对于这种大小的文件,我需要64位地址空间.我正在将当前显示的图像从内存映射文件移动到一个方法,该方法通过带有不安全指针的Marshal.Copy生成位图.
  • System.Threading.Tasks:我正在使用并行循环进行处理
  • System.Drawing.BufferedGraphicsContext:每个图像堆栈都有一个活动图像,在传递给PictureBox以显示给用户之前,该图像被合成到BufferedGraphicsContext上.
  • 高端系统要求:四核CPU或更好,SSD,12GB内存等

然而,即使使用上述所有内容,重复性仍然有很多不足之处.使用SysInternals Process Explorer,CPU利用率很低(<25%),而内存使用率在垃圾收集发生之前会上升到极限.

分析表明,大部分执行时间都花费在从内存映射文件中获取数据.我假设它等待操作系统将请求的内存页面重新打开到活动内存中?

我还能做些什么来提高性能?

注意:

  • 大多数(如果不是全部)图像堆栈将同时可见,因此剪切到当前视口可能不会产生太大的速度.
  • 调整显示大小是一个选项,但完整的原始数据必须始终可用于处理,因此这似乎只是一个额外的步骤.

更新1:

  • 对于内存,我的开发盒只有6 GB(我试图加载更少的文件),但部署系统将有24 GB.
  • 我正在考虑通过CUDA的Intel Performance Primitives和GPU加速使用SSE优化.
  • 我试图将所有数据加载到内存中的原因是因为一个重要的可视化步骤是以15-60 Hz的速度在图像堆栈中循环,我害怕颠簸.

.net c# parallel-processing memory-management image-processing

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

使用TestDriven.NET和NUnit在测试类中运行所有测试

注意:我正在为此项目使用TestDriven.NET 3.0.2749和NUnit 2.6.0.12051.

我已经安装了TestDriven.NET和NUnit,并试图通过右键单击上下文菜单让TestDriven.NET在测试类中运行所有测试.

从TestDriven.NET文档:

如果选择了代码编辑器窗口,则执行的测试将由插入符的位置确定; 通过右键单击测试方法内的任何位置并选择"Run Test(s)"来执行单个测试,如图2所示; 通过右键单击一个类(但在任何方法之外)并选择"Run Test(s)"来执行测试夹具中的所有测试; 通过右键单击命名空间内部并选择"运行测试"来执行命名空间中的所有测试.

我可以使用右键单击上下文菜单成功运行特定的测试方法,NUnit GUI运行器将成功运行给定类的所有测试,但我想使用快速访问TestDriven.NET为此任务提供的同时我是发展.

当我将插入符号置于测试方法之外时,我收到以下错误:

目标类型不包含已知测试框架或"主"方法的测试.

更新1:添加了示例代码.

要测试的示例代码:

namespace TDDN.Framework
{
    public class ExampleClass
    {
        public ExampleClass() { }

        public Int32 Add(Int32 x, Int32 y)
        {
            return x + y;
        }

        public Int32 Subtract(Int32 x, Int32 y)
        {
            return x - y;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

单元测试:

using NUnit.Framework;
using TDDN.Framework;

namespace TDDN.UnitTests
{
    [TestFixture] // Cursor caret placed here results in error above.
    public class ExampleClassTests
    {
        [Test] // Cursor caret …
Run Code Online (Sandbox Code Playgroud)

nunit unit-testing testdriven.net visual-studio-2010

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

TDD:进行集成测试是否合理,但没有单元测试?

技术堆栈:.NET 4,C#,NUnit

我正在尝试将测试驱动开发应用于执行图像处理的新项目.我有一个基类,包含共享文件I/O方法和子类,执行各种特定的处理算法.据我了解,单元测试不会触及文件系统或其他对象,并模拟发生的行为.我的基类只包含简单的访问器和简单的文件系统I/O调用.

public class BaseFile
{
    public String Path { get; set; }

    public BaseFile()
    {
        Path = String.Empty;
    }

    public BaseFile(String path)
    {
        if (!File.Exists(path))
        {
            throw new FileNotFoundException("File not found.", path);
        }

        Path = path;
    }
}
Run Code Online (Sandbox Code Playgroud)

测试这些方法有什么价值吗?如果是这样,我怎样才能抽象出对文件系统的调用?

我的另一个问题是如何测试特定于一种图像文件(~200 MB)的子类.我搜索了网站并发现了类似的 问题,但没有处理我正在使用的文件大小.一个类是否有可能进行集成测试(使用"黄金文件"),但没有单元测试?在这种情况下,我怎样才能严格遵循TDD方法并首先编写失败的测试?

.net c# nunit unit-testing

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

简单绑定的.NET数据绑定无法正常工作

技术:.NET 4,C#,WinForms,Visual Studio 2010

我正在处理学习数据绑定,甚至无法得到一个简单的例子来按预期工作.我有一个带有我绑定标签的表单,显示当前鼠标光标坐标.

public partial class Form1 : Form, INotifyPropertyChanged
{
    [Bindable(true)]
    private String cursorPosition;
    public String CursorPosition
    {
        get
        {
            return cursorPosition;
        }

        set
        {
            cursorPosition = value;
            NotifyPropertyChanged("CursorPosition");
        }
    }

    public event PropertyChangedEventHandler PropertyChanged;

    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_MouseMove(object sender, MouseEventArgs e)
    {
        CursorPosition = "(" + Convert.ToString(e.X) + " , " + Convert.ToString(e.Y) + ")";
    }

    private void NotifyPropertyChanged(String propertyName)
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
        }
    } 
} …
Run Code Online (Sandbox Code Playgroud)

.net c# data-binding winforms

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