我用过Matlab,现在试着把一些代码转换成Julia。 % Load data in Matlab
fileID = fopen('./data_6000x3199.bin');
Data = fread(fileID,[6000,3199],'single');
fclose(fildID); 但是,我不知道如何在Julia代码中读取这个单一类型的二进制文件。有人能帮帮忙吗?
我现在开始使用Julia,我需要插值一个布朗运动。我运行了以下代码,但出现了以下错误。 N = 3
B = zeros(N)
B[N] = randn(1) 这会抛出: MethodError: Cannot `convert` an object of type Vector{Float64} to an object of type Float64
在Julia 1.0.0 REPL中,我得到了以下结果:
# Line 1: This make sense. I did not expect a Float64 to equal a BigFloat.
julia> 26.1 == big"26.1"
false
# Line 2: This surprised me when Line 1 is considered. Again, like Line 1, I
# did not expect a Float64 to equal an equivalent BigFloat.
julia> 26.
我测试了logistic函数的不同参数化,并比较了结果和不同参数对曲线的影响。
using Distributions
# Vector of x to test the different functions
x = collect(0:20)
Logis = Logistic(10, 1) # PDF of Logistic function in Julia
y = cdf(Logis, x) # CDF of Logistic function in Julia
# This is a standard representation of the CDF for L
我知道可以使用convert函数将Float64转换为Int64。不幸的是,当将convert应用于2维数组时,它不起作用。
julia> convert(Int64, 2.0)
2
julia> A = [1.0 2.0; 3.0 4.0]
2x2 Array{Float64,2}:
1.0 2.0
3.0 4.0
julia> convert(Int64, A)
ERROR: `convert` has no method matching convert(::Type{Int64}, ::Array{Float64,2
})
in convert at b
我是朱莉娅的新手。找到这个InexactError了。提到我已经尝试过转换为浮动,但它没有工作,也许我做错了什么。
column = df[:, i]
max = maximum(column)
min = minimum(column)
scaled_column = (column .- min)/max # This is the error, I think
df[:, i] = scaled_column
julia> VERSION
v"1.4.2"
在Fortran中,我们知道我们可以在模块中定义一个全局变量(使用私有属性),这样我们就可以使用模块中的子程序来设置或更改该变量的值。见下文,
module Mod
integer, parameter :: r8=selected_real_kind(15,9)
real(kind=r8), private, save :: var
contains
subroutine f(x)
real(kind=r8) :: x
var = 2.0_r8*x
end subroutine f
end
正如我们所看到的,我们可以调用f(x)并将模块中的var设置为2x。
在朱莉娅看来,
module M
我在Python和Julia中实现了Mandelbrot函数;但是,在第6次迭代之后,代码产生了不同的结果。主要原因是什么?
以下是Python的代码:
def mandelbrot(a):
z = 0
for i in range(50):
z = z**2 + a
return z
下面是Julia中的相同代码:
function mandelbrot(a)
z = 0
for i=1:50
z = z^2 + a
end
return z
end
我正在尝试比较两个数组。只是碰巧数组的数据包含NaN值,当您比较数组和NaN值时,结果与我所期望的不一样。
julia> a = [1,2, NaN]
3-element Array{Float64,1}:
1.0
2.0
NaN
julia> b = [1,2, NaN]
3-element Array{Float64,1}:
1.0
2.0
NaN
julia> a == b
false
在比较过程中,是否有一种优雅的方法来忽略这些Nan或有效地替换它们呢?
我有一个颜色数组,我想转换成一个数字矩阵:
using Colors
cols = [RGB{Float64}(rand(), rand(), rand()) for i in 1:6]
6-element Array{ColorTypes.RGB{Float64},1}:
RGB{Float64}(0.836012,0.505908,0.249548)
RGB{Float64}(0.383172,0.105153,0.361422)
RGB{Float64}(0.680616,0.974232,0.942787)
RGB{Float64}(0.804829,0.825503,0.99022
我在JuliaBox中使用的是Python2笔记本。我正在尝试绘制一些数据,但我一直收到错误:
TclError: no display name and no $DISPLAY environment variable
Julia本身具有在Julia笔记本中通过python进行绘图的功能。我已经亲自测试过了。PyPlot命令访问matplotlib.pyplot,对吗?
using PyPlot
plot([1,2,3,4])
然而,Python 2笔记本给我带来了困难。这就是我所拥有的:
import matplotlib.pyplot as plt
import numpy as np
我编写了一个估计pi的函数picircle()。
现在,我想为N个值绘制这个函数。
function Plotpi()
p = 100 # precision of π
N = 5
for i in 1:N
picircle(p)
end
end
3.2238805970149254
3.044776119402985
3.1641791044776117
3.1243781094527363
3.084577114427861
现在我不知道如何绘制函数,我尝试了plot(PP()),但是它没有工作
在这里,我定义了皮环:
function picircl
对于既可以是标量也可以是数组的函数参数,我应该在Julia中指定什么类型?例如,在下面的函数中,x和y可以是Float64或Array{Float64}。
function myfun(x, y)
return x .+ y
end
这些变量是否有适当的类型声明?或者,我应该避免在那里声明类型(或者编写泛型函数)吗?
当我尝试对Julia文档(v1.0.3)中的示例运行inv()函数时,我得到一个错误。代码如下(直接来自文档): julia> M = [2 5; 1 3]
2×2 Array{Int64,2}:
2 5
1 3
julia> N = inv(M)
ERROR: MethodError: objects of type Array{Float64,2} are not callable
Use square brackets [] for indexing an Array. 它确实适用于pinv(),但我得到了一些非常小的浮点值。你知道为什么我不能让inv()在这个极
我遇到了这个问题
julia> Tinit = 0.0
0.0
julia> for ii in 1:10
timeinterval = Tinit:0.05:(Tinit + 0.05)
println(Tinit + 0.05)
for item in timeinterval
println("+++++++++ ", item)
end
Tinit = timeinterval[end]
在之后,我决定用GNU对朱莉娅进行基准测试,结果与中所示的提速不一致。
我用CXXFLAGS='-std=c++11 -O3'编译了朱莉娅和got,结果如下:
a=0.9999;
tic;y=a.^(1:10000);toc
Elapsed time is 0.000159025 seconds.
tic;y=a.^(1:10000);toc
Elapsed time is 0.000162125 seconds.
tic;y=a.^(1:10000);toc
Elapsed time is 0.000159979 seconds.
--
tic;y=cumprod(o