我想编写一个用于活动识别的滑动窗口算法.
训练数据<1xN>因此我认为我只需要(比方说window_size=3)window_size数据并训练它.我后来也想在矩阵上使用这个算法.
我是matlab的新手,所以我需要有关如何正确实现这一点的任何建议/指示.
我正在使用Matlab R2011b.我想在编辑器中获取活动mfile的第一行的文本.我知道我可以使用以下代码将mfile的所有文本作为1xn字符数组(不分成行).但是我只想要第一行.
activeEditor = matlab.desktop.editor.getActive ;
activeEditor.Text ;
Run Code Online (Sandbox Code Playgroud)
有什么建议?
题
我希望它在运行(编译)的Matlab可执行文件中"监听"标准输入流.
这就是我相信它是c用相同的语言完成的:
#include stdio.h
fgets(line, 256, stdin)
Run Code Online (Sandbox Code Playgroud)
或者更精细的是,它可以这样使用:
if (!fgets(line, 256, stdin))
return;
if (line[0] == '\n')
continue;
sscanf(line, "%s", command);
Run Code Online (Sandbox Code Playgroud)
回答
为了完整起见,我将完整地留下背景和笔记,但在Amro和EitanT的帮助下,我已经设法解决了问题.
背景
我已经找到了如何做到这一点其他语言,并在这里是在编译过程中的一些指令.
但是,我还没有找到如何在Matlab中"监听"输入.我最接近的是Octave中对C-like IO的描述,但是当我在MATLAB中寻找解决方案时,我无法取得进展.
请注意,改变或包装通过流发送数据的程序是不可能的,并且我更喜欢纯MATLAB解决方案而不是包装整个程序.如果我用一种不同语言从MATLAB调用一个简单的函数就可以了.
我试过了什么?
我 从命令窗口尝试了一些函数fgets(0)(fid = 0似乎是对应的id stdin(正如@EitanT所提到的,并且在尝试时看到fopen(0)))但它只返回:
Operation is not implemented for requested file identifier.
Run Code Online (Sandbox Code Playgroud)
我还考虑过使用MATLAB中的选项来调用系统命令或执行java/ perl命令,但到目前为止还没有运气.我也不确定这些在编译后是否仍然有效.
此外,input('prompt','s')当我打开程序时,我尝试使用此作品cmd,但在我按下回车之前没有做任何事情.(当然我听的节目永远都不会做,最好的情况是我可以\n在每一行结尾处获得).
我也尝试了 waitinput从文件交换,但我认为这是一个死胡同,因为它没有赶上什么,似乎挺表现不佳.
笔记 …
我目前正在使用嵌套的try-catch语句调试代码.
我可以使用dbstop命令轻松处理错误,但每次查看代码并希望停止运行程序时,我必须dbquit为每个嵌套级别输入一次.
因为这很烦人,我正在寻找一个解决方案,一旦我完成调试就真的停止调试所有程序.
以下是我如何调用代码的示例:
dbstop if error
dbstop if caught error
mytestmain
Run Code Online (Sandbox Code Playgroud)
这里有一个函数可能是什么样子的例子(子函数可能在或不在不同的.m文件中)
function mytestmain
try
mytestsub
catch
end
%% Definition of subfunction
function mytestsub
try
a=b;%generate an error as b is not defined
catch
end
Run Code Online (Sandbox Code Playgroud)
我试过了什么?
dbquit两次的函数,但这只会执行dbquit一次.dbquit('all'),但没有效果请注意,我不想删除代码中的try-catch语句.
我一直在调试Excel VBA中的一些宏,并且发现当我想监视某些表达式时添加一个表是很方便的.但是,现在我想重新开始并决定从干净的观察名单开始.
不幸的是,我只找到了删除单个手表的方法,而不是一次性删除所有手表.
当然必须有一种摆脱它们的方法,而不必逐个删除几十个观看项目,但尽管搜索我没有找到任何关于如何实现这一点的提示.
因此我的问题是:
注意:这实际上是关于监视项目,而不是关于断点.
我正在寻找一种方法来检测我的代码中调用特定函数的所有点.
一些例子:
sort,但它不是那么容易找到一个电话sort援引unique的例子.跟踪从特定函数到特定(内置)函数的所有潜在(in)直接函数调用的最佳方法是什么.
我想构造一个接受输入n并给出向量的函数
[n n-1 n-2 ... n-n, n-1 n-2 ... n-n, ..., n-n]
//Example
input : n=3
output : [3 2 1 0 2 1 0 1 0 0]
Run Code Online (Sandbox Code Playgroud)
我知道如何使用循环来做到这一点,但我正在寻找一种在MATLAB中做到这一点的聪明方法
我正在尝试调试一些代码,而在中间的某个地方,我在断点处停了下来.现在我想更改一些变量并多次运行某个循环.
我知道如何更改变量,但在尝试在即时窗口中运行循环时,我会陷入困境.这是一个例子:
Dim i As Integer
Dim j As Integer
For i = 0 To 6
j=i ' Do something
Next i
Run Code Online (Sandbox Code Playgroud)
我尝试了几种代码变体,但每次出现以下错误:
编译错误:下一个没有
我试过搜索,但大部分都找到了关于循环问题的信息,而我很确定循环本身很好.(特别是当我到达断点之前到达它).
我看到有人在这种情况下唯一的地方,他把循环减少到一行,但是在我的情况下,每次这样做都是非常不切实际的.
我意识到我可以调用一个包含循环的函数,然后函数调用可能会起作用,但这再次感觉非常不切实际.所以我想这归结为以下问题.
我有一个 pyspark 数据框,如:
A B C
1 不适用 9
4 2 5
6 4 2
5 1 不适用
我想删除包含值“NA”的行。在这种情况下,第一行和最后一行。如何使用 Python 和 Spark 实现这一点?
根据评论更新:寻找一种解决方案,该解决方案可以删除在许多列中的任何列中包含字符串:NA 的行。
我有一个实现Ram-Lak过滤器的任务,但几乎没有给出任何信息(除了看fft,ifft,fftshift,ifftshift).
我有一个正弦图,我必须通过Ram-Lak过滤.还给出了投影的数量.
我尝试使用过滤器
1/4 if I == 0
(b^2)/(2*pi^2) * 0 if I even
-1/(pi^2 * I^2) if I odd
Run Code Online (Sandbox Code Playgroud)
b似乎是截止频率,我与采样率有关?
还有人说,两个函数的卷积是傅立叶空间中的简单乘法.
我根本不明白如何实现过滤器,特别是没有给出b,没有告诉我是什么,也不知道如何将其应用于sinogram,我希望有人可以帮助我.我花了两个小时谷歌搜索并试图了解这里需要做什么,但我无法理解如何实现它.