小编Mar*_*arc的帖子

MATLAB函数知道它们定义在哪个目录中吗?

可能重复:
在Matlab中查找当前m文件的位置

我想写一个m文件,它将显示定义函数的目录.

例如,如果函数foo.m放在目录c:\ bar和c:\ foo中(文件的完整路径是c:\ bar\foo.m或c:\ foo\foo.m),这两个命令都不在MATLAB路径上

addpath("c:\bar");
foo
Run Code Online (Sandbox Code Playgroud)

会产生结果:我位于目录c:\ bar

addpath("c:\foo");
foo
Run Code Online (Sandbox Code Playgroud)

会产生我位于目录c:\ foo中的结果

我怎么写这样的功能?

matlab

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

在C++中,我可以将类类型表示为变量吗?

我想从一个我将在运行时确定的类调用静态方法,但我知道它是给定类的子类.所以我要说我有这些课程

class super {
    public:
    super();
    static super *loadMe (ifstream &is);
}

class subA : public super {
   public:
   subA();
   static super *loadMe (ifstream &is);
}

class subB : public super {
   public:
   static super *loadMe (ifstream &is);
   private:
   subB();
}
Run Code Online (Sandbox Code Playgroud)

让我们说我想在运行时(根据文件中的内容)确定是否要加载subA或subB.我可以这样做的一种方法是使用一个空对象来调用该方法

super getLoadType (ifstream &is) { if(complicatedFunctionOfIs(is)) return subA(); return subB()}

super *newObj = getLoadType(is).loadMe(is);
Run Code Online (Sandbox Code Playgroud)

但是我把subB的无参数构造函数设为私有,所以我不能在这里做.但我实际上并不需要超级对象,只需要超类的类类型.那么有没有办法将其表示为变量?

编辑:我知道在这种情况下,我可以返回一个函数指针,但我正在考虑更复杂的例子,可能需要调用多个静态函数.

c++ static-methods class private-constructor

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

在MATLAB匿名函数中强制评估变量

MATLAB存储变量以及匿名函数.以下是文档中如何工作的示例.

表达式中的变量:

函数句柄不仅可以存储表达式,还可以存储表达式需要用于评估的变量.

例如,为需要系数a,b和c的匿名函数创建函数句柄.

a = 1.3;
b = .2;
c = 30;
parabola = @(x) a*x.^2 + b*x + c;
Run Code Online (Sandbox Code Playgroud)

因为a,b和c在您创建抛物线时可用,所以函数句柄包含这些值.即使清除变量,值仍会保留在函数句柄中:

clear a b c
x = 1;
y = parabola(x)
y =
   31.5000
Run Code Online (Sandbox Code Playgroud)

据推测,ab和c的值即使在保存并从mat文件重新加载时也与函数一起存储.在实践中,我发现这些值不会持久存在,尤其是在编辑最初创建函数的代码时.

有没有办法根据变量的数值定义函数句柄?我想要一些形式

>> a = 1.3;
>> b = .2;
>> c = 30;
>> parabola = @(x) a*x.^2 + b*x + c

parabola = @(x) a*x.^2+b*x+c

>> parabola2 = forceEval(parabola)

parabola2 = @(x) 1.3*x.^2+.2x+30
Run Code Online (Sandbox Code Playgroud)

编辑:也许我的问题是与文件关联,但当我编辑我最初定义匿名函数的文件时,我得到一个错误,看起来像:

无法在C:中找到函数@(ydata)nr /(na*dt)*normpdf(ydata,mu(j),s(j))./ normpdf(ydata,mu_a(j),s_a(j)). ..\mfilename.m.(我将mfile的名称更改为mfilename)

我对这类东西的通常解决方案是使用func2str()来删除文件依赖项,但这也会删除包含参数值的工作空间信息.所以我想强制所有参数在函数定义中采用它们的数值.

matlab anonymous-function function-handle

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

在LabVIEW中将Unix样式路径转换为Windows(或特定于OS)路径

我正在使用labview 8.5.1

我有一个文件的路径存储为文本文件中的unix样式字符串.(例如文件包含字符串/ refs/heads/master)

我想将它转换为LABVIEW中的路径,但字符串到路径函数假定我有一个Windows样式路径字符串(例如\ refs\heads\master)

这个特定的上下文是我想用收集的数据记录一个git哈希代码,所以我总是知道我正在使用的软件的特定版本,git将文件存储为unix-style-strings.

一个快速的解决方案是找到并更改所有/到\,但这是不优雅的,如果它在OSX或使用unix样式格式的任何其他操作系统上运行,也会导致VI崩溃.

有没有办法强制字符串到路径VI使用特定的操作系统样式?

(建议标签:路径格式化)

labview path

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