尽管英特尔 MKL 在 GNU Octave 中加快了计算速度,但当矩阵的大小很大时,结果有时(在 Xubuntu 20.04 中使用 Octave 5.2.0 测试)完全错误。这已在此处和此处提及。
例如,这个要点显示了一个例子,Octave 和 Scilab 产生不同的结果,并且 Octave 的结果是错误的(它每次运行脚本时都会改变。Octave 使用 OpenBLAS 给出正确的结果)。
这是要点中的代码。
for a = 1:500
for b = 1:500
c(a,b) = sin(a + b^2);
endfor
endfor
g = eig(c);
m = max(real(g))
%Correct result is ans = 16.915
%With MKL in Ubuntu 20.04, I get random numbers of order 10^5 - 10^6, which changes on every run
Run Code Online (Sandbox Code Playgroud)
如何解决这个问题?
如何访问整个元素hello和ahoy八度?仅打印每个字符串中的第一个字符。
octave:1> s = ["hello";"ahoy"]
s =
hello
ahoy
octave:2> s(1)
ans = h
octave:3> s(2)
ans = a
Run Code Online (Sandbox Code Playgroud) 假设我有四个矩阵,a、b、c和d。
在Python(使用numpy)中,我需要将result = np.matmul(np.matmul(np.matmul(a,b),c),d)它们相乘。
在 MATLAB/GNU Octave 中,我可以用更简单的方式将它们相乘result = a*b*c*d。
有没有什么方法可以在Python中进行矩阵相乘,这样我就不必重复编写np.matmul避免嵌套括号?