小编zlo*_*lon的帖子

快速获取下标行的平均值的方法

我有一个数据,可以通过以下方式模拟:

N = 10^6;%10^8;
K = 10^4;%10^6; 

subs = randi([1 K],N,1);
M = [randn(N,5) subs];
M(M<-1.2) = nan;
Run Code Online (Sandbox Code Playgroud)

换句话说,它是一个矩阵,最后一行是下标.现在我想计算nanmean()每个下标.另外,我想保存每个下标的行数.我有一个'虚拟'代码:

uniqueSubs = unique(M(:,6));
avM = nan(numel(uniqueSubs),6);
for iSub = 1:numel(uniqueSubs)
    tmpM = M(M(:,6)==uniqueSubs(iSub),1:5);
    avM(iSub,:) = [nanmean(tmpM,1) size(tmpM,1)];
end
Run Code Online (Sandbox Code Playgroud)

问题是,它太慢了.我希望它适用于(N = 10^8K = 10^6参见这些变量定义中的注释部分).

如何以更快的方式找到数据的平均值?

performance matlab matrix mean

3
推荐指数
2
解决办法
90
查看次数

如何从外部文件加载着色器?三.文件加载器

我想从外部文件加载着色器。这个着色器是正确的,因为它在插入<script>标签时工作。我执行以下操作:

var loader = new THREE.FileLoader();
loader.load('shader.vert',function ( data ) {vShader =  data;},);
loader.load('shader.frag',function ( data ) {fShader =  data;},);
Run Code Online (Sandbox Code Playgroud)

后来我把它用作:

var material = new THREE.ShaderMaterial({
    uniforms: uniforms,
    vertexShader: vShader,
    fragmentShader: fShader,

});
Run Code Online (Sandbox Code Playgroud)

问题是当我重新加载页面时我出错了,着色器没有定义。当我在控制台中输入 vShader 时,它会打印出我想要的内容。当我开始调试时(init() 函数内的断点未定义。

你能解释一下我的错误吗?

整个代码:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">

    <script src="https://threejs.org/build/three.min.js"></script>

</head>
<body>
<div class="WebGL-output" id="WebGL-output"></div>
<script id="vertexShader" type="x-shader/x-vertex" src="shader.vert">
varying vec2 vUv;
void main() {
vUv = uv;
gl_Position = projectionMatrix * modelViewMatrix * vec4(position,1.0);
}
</script>
<script id="fragmentShader" type="x-shader/x-fragment">
uniform …
Run Code Online (Sandbox Code Playgroud)

javascript three.js

1
推荐指数
2
解决办法
3295
查看次数

如何在透视相机和正交相机之间切换并保持所需对象的大小

我尝试在脚本中在透视相机和正交相机之间切换。我希望物体处于一定深度以保持其投影尺寸。我放弃了去理解几何......

您能否提供一些简单教程的链接,对我来说太复杂了。

对于position.z==0我的对象有:

perspCamera = new THREE.PerspectiveCamera(45, W / H, 1, 1000);
perspCamera.position.z = 100;

var S=Math.tan((45/180)*Math.PI)*100;
orthoCamera = new THREE.OrthographicCamera( -S, S, S, -S, 1, 1000 );
Run Code Online (Sandbox Code Playgroud)

这是不正确的。

更新:

我明白了,我将用 codepen 链接发布答案

javascript orthographic perspectivecamera coordinate-transformation three.js

1
推荐指数
1
解决办法
2796
查看次数

如何在Julia中求解随机微分方程?

我尝试了解如何用数值方法求解随机微分方程(SDE)(我没有任何语言的经验,但出于某些原因,我选择了Julia)。作为初始模型,我决定使用Lotka-Volterra方程。我阅读了DifferentialEquations.jl的手册和教程。虽然我的模型是一个简单的ODE系统:

在此处输入图片说明

一切正常:

using DifferentialEquations
using Plots
function lotka(du,u,p,t);
    , , ,  = p; 
    du[1] = *u[1]-*u[1]*u[2];
    du[2] = *u[1]*u[2]-*u[2];
end
u0 = [15.0,1.0,0.0,0.0];
p = (0.3,0.05,0.7,0.1);
tspan = (0.0,50.0);
prob = ODEProblem(lotka,u0,tspan,p);
sol = solve(prob);
plot(sol,vars = (1,2))
Run Code Online (Sandbox Code Playgroud)

现在,我要添加Ornstein-Uhlenbeck噪声:

在此处输入图片说明

愚蠢的简单解决方案是:

using DifferentialEquations
using Plots
function lotka(du,u,p,t);
    , , , , ,  = p; 
    du[1] = *u[1]-*u[1]*u[2]+u[3];
    du[2] = *u[1]*u[2]-*u[2]+u[4];
    du[3] = -u[3]/+sqrt((2.0*^2.0/))*randn();
    du[4] =  -u[4]/+sqrt((2.0*^2.0/))*randn();
end
u0 = [15.0,1.0,0.0,0.0];
p = (0.3,0.05,0.7,0.1,0.1,0.1);
tspan = …
Run Code Online (Sandbox Code Playgroud)

numerical-methods stochastic differential-equations julia

1
推荐指数
1
解决办法
237
查看次数

球坐标中的插值曲线

我有点,属于3D空间中的一些非参数曲线.我需要在球坐标中工作并在给定azimuthelevation值中插入给定的曲线.

你能用这种插值算法帮助我吗?

PS我不确定,从我在1D空间中绘制的一维曲线的问题想法是明确的.所以,以防下面的代码创建这样的,但参数化.

x=linspace(-2*pi,2*pi,10^3);
y=sin(x);
z=sinh(x);
Run Code Online (Sandbox Code Playgroud)

更新:

感谢@jodag关于上采样的非常好的帖子.slerp是完美的!然而,我的问题是不同的,或者我不明白如何使用上采样来解决它.假设我将我的点定义为数组(只是一些虚拟数据用于演示):

x_given = rand(9, 1) - 0.5; 
y_given = rand(9, 1) - 0.5; 
z_given = rand(9, 1) - 0.5; 
x_given(end+1) = x_given(1); % should work for closed curves
y_given(end+1) = y_given(1); % should work for closed curves
z_given(end+1) = x_given(1); % should work for closed curves
Run Code Online (Sandbox Code Playgroud)

我想找到x_i, y_i, z_i给定的所有点()elevation_qazimuth_q:

elevation_q = pi./4;
azimuth_q = pi./7;
[x_i, y_i ,z_i] …
Run Code Online (Sandbox Code Playgroud)

3d matlab interpolation curve-fitting

0
推荐指数
1
解决办法
545
查看次数

无法将BitArray {1}类型的对象"转换"为Int64类型的对象.朱莉娅

我在朱莉娅很新,所以也许这是一个愚蠢的问题.我有以下代码:

a = [1.0, 2.0];
b = [2.2, 3.1];
Int(a.>b)
Run Code Online (Sandbox Code Playgroud)

它给了我一个错误:

MethodError: Cannot `convert` an object of type BitArray{1} to an object of type Int64
This may have arisen from a call to the constructor Int64(...),
since type constructors fall back to convert methods.

Stacktrace:
 [1] Int64(::BitArray{1}) at ./sysimg.jl:77
 [2] include_string(::String, ::String) at ./loading.jl:522
Run Code Online (Sandbox Code Playgroud)

该命令1(a.>b)效果很好.你能解释一下: 为什么我的隐式转换不起作用?

type-conversion julia

0
推荐指数
1
解决办法
530
查看次数