我在我的Octave的文件中定义了一些.m,并且希望在Octave %test中使用来测试这些子函数,比如单元测试。
我的.m文件如下所示:
function A = fn1()
A = 1
end
function B = fn2()
B = 2
end
%!test
%!assert (fn2(), 2)
但有人告诉我:
!测试失败
第2行第9列附近未定义的“fn2”
我想知道是否有可能定义子函数并使用Octave的内置测试功能来测试它。谢谢。
更新:
我来自Java/Python世界,刚开始学习Octave。当我开始使用Octave解决一些问题时,我尝试在Octa
当我进入时:
>> help help
我收到错误消息:
error: unable to open /usr/local/Cellar/octave/3.8.1_1/share/octave/3.8.1/etc/macros.texi for reading
error: called from:
error: /usr/local/Cellar/octave/3.8.1_1/share/octave/3.8.1/m/help/__makeinfo__.m at line 103, column 5
error: /usr/local/Cellar/octav
有没有可能用八度做一个求和系列?
在中,它有symsum函数,但是我没有发现任何类似的八度。
例如,我希望找到以下和
增编:
是否有可能把这样的事情加起来
f = @(x) nchoosek(5,x)*0.1.^x*0.9.^(5-x)
sum(f([0:5]))
因错误而失败
error: called from:
error: /usr/share/octave/3.6.4/m/help/print_usage.m at line 87, column 5
error: /usr/share/octave/3.6.4/m/specfun/nchoosek.m at l
我想在matlab-mode中将forward-sexp重新映射为matlab-forward-sexp。
目前我这样做:
(define-key matlab-mode-map [remap forward-sexp] 'matlab-forward-sexp-safe)
但是,当我在matlab模式下输入M-x forward-sexp时,我仍然会得到旧的行为。为什么?它只在我通过键盘快捷键调用forward-sexp时才起作用吗?
当我输入C-h f forward-sexp时,一切似乎都很好:
forward-sexp is an interactive compiled Li
因此,我正在尝试对数据集执行k折交叉验证,但在获取octave以接受输入时遇到问题。首先,我尝试使用嵌套的平方损失函数来运行fminunc,但Octave只是说还不支持。我的下一次尝试有一个squaredLoss函数文件,它作用于一个全局数据集,我每次都会在main函数中更改该数据集,但它总是抛出该数据集未定义的消息。由于我不能将数据集作为参数传递给fminunc,我应该如何解决这个问题(或者我是否错误地使用了全局变量?)
for i = 1:NUMBER_OF_FOLDS
global funcdata;
funcdata = data{i};
[theta(i),
我已经使用ATLAS库(特别是多线程库: libtatlas.so)构建了octave (成功)。
在配置和生成过程中,所有操作看起来都很好(经过大量调试),但在制作Octave之后,我仍然看到矩阵乘法操作在一个线程中运行( ATLAS库应该使该操作多线程)。
我是否可以看到Octave库在执行矩阵乘法操作时实际使用的方法,例如:
x = rand(10000,10000); y = rand(10000,10000); t=time();
z = x * y;
我试图确定这是否仍然是一个构建问题(例如,Octave没有在正确的ATLAS库中链接),或者这是否是一个ATLAS问题(Octa
我新安装的Octave无法识别已安装的软件包:
>> pkg install -forge quaternion
For information about changes from previous versions of the quaternion package, run 'news quaternion'.
>> pkg list
no packages installed.
>>
我在Windows10上使用Octave-4.0.3。安装操作会更新c:\Octave\Octave-4.0.3\share\octave\packag
是否有一种方法可以使用MATLAB中的varargin以下列方式提供参数?
函数
func myFunc(varargin)
if a not given as argument
a = 2;
if b not given as argument
b = 2;
if c not given as argument
c = a+b;
d = 2*c;
end
我想用b=3和另一次调用上面的函数,而前一个函数运行在相同的命令窗口中,a=3和c=3,这一次让b在函数中获得默认值。如何使用varargin来完成它呢?
我试图在Octave中重载一些内置函数,以便在调用重载函数的内置版本之前执行自定义操作。在MATLAB (据说是八度)中,我可以使用函数实现这一点。
典型的函数定义如下所示,在执行自定义操作后,我将所有输入/输出转发到/从内置的输入/输出:
function varargout = disp(varargin)
% Do a custom thing
fprintf('Calling overloaded disp!\n')
% Now call the builtin
[varargout{1:nargout}] = builtin('
我正在尝试在一个大的数据框中逐行计算一个二进制字符的结果:
V1 V2 V3 V4 V5
Loss Loss Loss Loss Loss
Loss Loss Win Win Loss
Loss Loss Loss Loss Loss
我需要知道的是每一行的输赢频率。这只是一个简短的例子(大量模拟输出的片段),但是对于第一行,在五次模拟中,我有五次失败,第二行三次失败和两次胜利,等等。
我希望生成一个单独的表,显示每行的赢/输的频率,或者,如果这样做不起作用,添加两个新列:一
我无法安装octave-image:i386软件包。为了解决这个问题,我安装了依赖项,但在此之后得到了相同的错误:
The following packages have unmet dependencies:
octave-image:i386 : Depends: octave:i386 (>= 4.0.0) but it is not going to be installed
有人能帮我解决这个问题吗?
pagla@pagla-Inspiron-3521:~$ sudo apt-cache policy octave octave-image
octave:
Install
我正在使用Oct2py包从他们的网站运行一个非常基本的心理学工具箱示例,当我试图返回两个浮点值时,我遇到了一个问题,它看起来像是: from oct2py import octave
import sys
def ptb():
# Clear the workspace and the screen
octave.sca;
octave.close;
octave.PsychDebugWindowConfiguration;
# Here we call some default settings for setting up Psychtoo
我目前正在研究一个使用ORB的小算法。它必须在某个时刻重新计算关键点和描述符,因为它们的位置和大小会发生变化。但是,在"useExistingKepoints"-flag打开的情况下调用detectAndCompute时,在断言“>= 0”时会失败。我很困惑,因为在关键点或描述符中没有名为"level“的属性。我的问题是,到底是什么导致断言失败,以及如何避免?
仅供参考:由于跟踪器使用矩形边界框而不是圆形关键点,因此我必须将其中一个转换为另一个。
Keypoint2BoundingBox:
//Create Rect2d with data from the ke
我是Octave的新手,尝试安装软件包“杂项”来使用GNU单元。安装失败。我试过:
apt-获得安装八度-杂项
deb软件包安装,但没有列出在10月3日(通过>>pkg列表)。然后我试着:
> pkg install -forge miscellaneous
八度3.8度回应:
error: element number 1 undefined in return list
error: called from:
error: /opt/octave3.8/share/octave/3.8.0/m/pkg/private/get_forge_pkg.m at li
在Octave中,我可以抑制或隐藏在行尾添加分号的指令的输出:
octave:1> exp([0 1])
ans = [ 1.0000 2.7183 ]
octave:2> exp([0 1]);
octave:3>
现在,如果函数在返回值之前显示文本(例如,使用disp()或print()),我如何抑制输出?换句话说,我希望能够做到这一点:
disp("Starting...");
% hide text the may get displayed after this point
% ...
% show all text again after t
在八度范围内,命令format bit之后的所有数字输出将显示存储在内存中的数字的本机位表示。例如,
octave:1> format bit
octave:2> 0.5
ans = 0011111111100000000000000000000000000000000000000000000000000000
octave:7> 2
ans = 0100000000000000000000000000000000000000000000000000000000000000
octave:3> format
octave:4> 0.5
ans = 0.50000
我正在尝试使用Octave读取包含数字和字符串的文本文件。文件格式如下所示:
A B C
A 10 100
B 20 200
C 30 300
D 40400
E 50 500
但分隔符可以是空格、制表符、逗号或分号。如果分隔符是空格/制表符,则textread函数可以正常工作:
[A,B,C] = textread ('test.dat','%s %d %d','headerlines',1)
但是,如果分隔符是逗号/分号,则不起作用。我尝试使用dklmread:
dlmread ('test.dat',';'
下面列出了我在Centos 7中尝试安装Octave 4.2.1的步骤(回购版本是3.8.2,现在已经很老了)
1) yum update
2) yum-builddep -y octave
3) yum -y install qt-devel mercurial gcc-c++ lapack-devel libtool
4) yum -y install epstool transfig pstoedit qscintilla-devel
(NOTE: First problem was right here as there is NO pstoedit in Cent
这是我的C++代码(使用C++ Octave API),它使用内置的Octave函数filter(),它至少接受3个参数作为输入。
#include <iostream>
#include <complex>
#include "/usr/include/octave-4.2.2/octave/builtin-defun-decls.h"
int main (void) {
int len = 10000000; // 10 millions
Array<float> filter_taps(dim_vector (1,10
我已经在不同的操作系统上安装了GNU Octave,并想检查一下它们的编译标志。特别是在基于RPM的系统上,Octave包是使用的enable64=no编译的
有没有办法检查octave的命令行选项是什么?
作为一种变通办法,我可以声明一个大型数组,例如
octave:1> a = zeros (1024*1024*1024*3, 1, 'int8');
error: out of memory or dimension too large for Octave's index type
但我更喜欢一种更明确的方式来检查Octave的编译标志。