我正在许多不同的位置处理我的 MATLAB 代码,如果我能让代码知道它在计算机上的位置,那将非常有帮助。到目前为止,我一直在使用 .m 文件。对于 .m 文件,我找到了以下解决方案:
%example 1    
cd(fileparts(mfilename('fullpath')))
Run Code Online (Sandbox Code Playgroud)
或者
%example 2
tmp = matlab.desktop.editor.getActive;
cd(fileparts(tmp.Filename));
Run Code Online (Sandbox Code Playgroud)
或者
%example 3
S = dbstack('-completenames');
S(1).file
Run Code Online (Sandbox Code Playgroud)
或者
%example 4
which(mfilename)
Run Code Online (Sandbox Code Playgroud)
但是在 MATLAB 2016a 中,有一个名为 live script 的新功能。这样一来,这些解决方案就不再起作用了。
%For example I would like to do something like this
cd(MLX_FILELOCATION);
%or
which(mlxfilename)
Run Code Online (Sandbox Code Playgroud)
(编辑 III:问题:我无法获得当前打开/执行的 MATLAB 文件的路径/文件位置或名称。使用 *.m-files 这可以通过上面的示例实现。使用 *.mlx-files 它是不可能了。我更喜欢使用 *.mlx-files 而不是 *.m-files。)
在 *.mlx 文件中执行的上述示例的输出:
%example1: mfilename returns the path to the 'MatlabEvaluationHelper' in the 'AppData\Local\Temp'-folder
%example2: output is an empty …Run Code Online (Sandbox Code Playgroud) 是否有一种有效的编程方法来解决以下任务?
想象一下以下向量:
A<-[a,b,c...k]
Run Code Online (Sandbox Code Playgroud)
并希望通过以下方式传播它:让我们从例如n = 2开始
B<-[a,a,b,b,c...,k,k]
Run Code Online (Sandbox Code Playgroud)
现在n = 4或任何数字大于1
C<-[a,a,a,a,b,...,k,k,k,k]
Run Code Online (Sandbox Code Playgroud)
通过循环来解决这个问题看起来很简单,但是我错过/可以使用任何基于函数或矢量的操作吗?Tidyverse解决方案(在管道中使用它)对我来说是最好的解决方案.
(很难对这项任务进行研究,因为我是R中的新手并且没有正确的搜索条件.任何帮助都会有所帮助.)