小编Wer*_*ner的帖子

Three.js JSONLoader搅拌器模型错误:属性'长度'未定义

我最近一直在尝试Three.js,我使用Blender的导出器插件测试在混合器和导出中制作模型,所以我可以在three.js程序中使用它们.

我将附加组件包含在搅拌机中,并使用搅拌机的基本立方体模型,将其导出到.json,如出口商所说.然后我使用这个作为向导将模型导入我的three.js 但是这给了我一个错误:

Uncaught TypeError: Cannot read property 'length' of undefined.
Run Code Online (Sandbox Code Playgroud)

我已经在线搜索并尝试了一些不同的方法(比如在加载器的函数调用中包含一个材料),但似乎没有任何工作.

我还检查了stackoverflow的答案,但到目前为止似乎没有解决.如果有人会澄清我做错了什么,我将非常感激.

我的three.js程序的代码:

var WIDTH = 1000,
        HEIGHT = 1000;


var VIEW_ANGLE = 45,
        ASPECT = WIDTH / HEIGHT,
        NEAR = 0.1,
        FAR = 10000;


var radius = 50,
        segments = 16,
        rings = 16;

var sphereMaterial =
        new THREE.MeshLambertMaterial(
                {
                    color: 0xCCCCCC
                });


var sphere = new THREE.Mesh(
        new THREE.SphereGeometry(
                radius,
                segments,
                rings),
        sphereMaterial);



var pointLight =
        new THREE.PointLight(0x660000);


var $container = $('#container');


var …
Run Code Online (Sandbox Code Playgroud)

3d json undefined blender three.js

8
推荐指数
2
解决办法
6708
查看次数

Cellfun与简单Matlab循环性能

当我在大学的某个时候开始使用matlab时,如果他看到任何不必要的循环(他会要求交换它kron或尽可能的任何类型的索引操作),我的主管会杀了我.后来,我试图尽可能地避免在matlab上的任何循环,寻找最黑暗的matlab编码方式来做黑魔法而不是简单的循环.

有一天,我发现了cellfun,这使得黑魔法变得相当简单,我可以改变许多使用单元格和cellfun组合的循环,但有一天我看到一篇关于cellfun的帖子让我质疑我的遗传matlab知识是否真实,即:matlab循环总是比一个内置的编译函数慢,这是我非常有信心的东西.我在我的一个实现中测试了它,事实上,for循环会更快!我觉得,OMG,那些日子里做的模糊代码浪费了什么哈哈哈.从那天起,我就停止了努力尝试优化matlab代码,通常它取决于每个案例等等.

今天我看到了这个答案,它记得我尽量避免尽可能多的matlab循环(我不知道作者是否会为了性能而避免这种情况,但无论如何它提醒了所有这些matlab循环性能的事情).我想到了一个问题:cellfun比for循环好吗?什么时候会是真的?

performance matlab

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

在vim上将项目设置为更高的突出显示优先级

我希望非ascii字符显示在这里讨论,但是当非ascii字符在注释中时,语法高亮消失.稍微调查一下这个问题,我在vim-manual上发现,先前启动的项目具有更高的优先级(第3项).来自help :syn-priority:

当多个语法项可能匹配时,将使用以下规则:

  1. 当多个匹配或区域项目在同一位置开始时,最后定义的项目具有优先级.

  2. 关键字优先于匹配和区域项.

  3. 从较早位置开始的项目优先于在以后位置开始的项目.

我目前正在使用这个:

syntax match nonascii "[^\x00-\x7F]" 
highlight nonascii cterm=underline ctermfg=red ctermbg=none term=underline
Run Code Online (Sandbox Code Playgroud)

我尝试使用以下选项给nonascii匹配项更高优先级nextgroup:

syntax match nonascii "[^\x00-\x7F]" nextgroup=Comment
Run Code Online (Sandbox Code Playgroud)

contains选项:

syntax match nonascii "[^\x00-\x7F]" contains=ALL
Run Code Online (Sandbox Code Playgroud)

但它不起作用.我还尝试暂时禁用评论(highlight clear Comment)而没有达到预期的效果(我的评论没有突出显示,但是nonascii继续没有突出显示).我错过了什么?

vim vim-syntax-highlighting

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

Python&SCons&Matlab:错误的命令输入

我正在使用SCons来安装软件包,但是当我尝试使用mex(matlab编译器)进行编译时,它会运行来自pdfTeX的其他命令.要在bash上解决这个问题,我刚刚更改了.bashrc:

别名mex ="/ Applications/MATLAB_R2009b.app/bin/mex"

但我不知道如何在SCons环境中改变它.有人知道怎么做吗?

谢谢.

python matlab scons mex tex

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

将数据提示堆栈放在轴标签的顶部,并在轴位置上进行更改后更新轴标签

此问题仅适用于unix matlabs,Windows用户将无法重现它.

我在尝试创建位于y轴标签顶部的数据提示时遇到了麻烦.下图说明了这个问题:

问题示例

如您所见,靠近ylabel创建的数据提示将深入到ylabel文本,而欲望效果则相反:数据提示位于轴标签的顶部.

我使用以下(不是那么简单的)代码生成了该图,下面是可用的.您可以删除评论的行% may be removed,或者甚至只是将数据提示放在-78而不是循环上以实现更快的测试脚本,但是如果有人有一天希望它创建自定义数据提示,我会保留此代码(在这种情况下,考虑一下http://undocumentedmatlab.com/blog/controlling-plot-data-tips/):

gradientStep = 1e-1;

x=-100:gradientStep:100; xSize=numel(x);
y=x.^3-x.^2;

figH=figure(42);
lineH=plot(x,y);

ylabel('YLabel (YUnits)','FontSize',16)
xlabel('XLabel (XUnits)','FontSize',16)

dcH=datacursormode(figH);

nTips = 20; % May change the loop for a datatip at x=-78.

for pos = round(linspace(2,xSize,nTips))
  datatipH=dcH.createDatatip(lineH,...
    struct('Position',[x(pos) y(pos)]));

  orientation = 'top-left';

  if pos>1
    tipText{1} = 'The grandient here is: ';
    tipText{2} = ['\Deltax:',sprintf('%d',x(pos)-x(pos-1)),' XUnits'];
    tipText{3} = ['\Deltay:',sprintf('%d',y(pos)-y(pos-1)),' YUnits'];
  else
    tipText = 'Cannot calculate gradient here.';
  end

  bkgColor = [1 1 .5]; …
Run Code Online (Sandbox Code Playgroud)

matlab plot

5
推荐指数
2
解决办法
1027
查看次数

带单元格的子引用

这个问题是我在回答这个问题的时候出现的。这应该是我正在做的一些愚蠢的错误,但我无法得到它是什么错误\xe2\x80\xa6

\n\n
myMatrix = [22 33; 44 55]\n
Run Code Online (Sandbox Code Playgroud)\n\n

返回:

\n\n
>> subsref(myMatrix, struct(\'type\',\'()\',\'subs\',{{[1 2]}} ) );    \n\nans =\n\n    22    44\n
Run Code Online (Sandbox Code Playgroud)\n\n

将其与细胞一起使用时:

\n\n
myCell = {2 3; 4 5} \n
Run Code Online (Sandbox Code Playgroud)\n\n

返回:

\n\n
>> subsref(myCell,struct(\'type\',\'{}\',\'subs\',{{[1 2]}} ) );\n\nans =\n\n     2  % WHATTT?? Shouldn\'t this be 2 and 4 Matlab??\n
Run Code Online (Sandbox Code Playgroud)\n\n

检查subsref 文档,我们看到:

\n\n
\n

查看 MATLAB 如何调用表达式的 subsref:

\n\n

A{1:2} 语法 A{1:2} 调用 B = subsref(A,S),其中 S.type=\'{}\' 和\n S.subs={[1 2]}。

\n
\n\n

这似乎不正确,因为 subsref 返回的值只是第一个参数,而不是所有参数。 …

matlab subset cell-array matrix-indexing

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

让Matlab处理事件或属性

这个问题

我怎么可能会得到double类型的处理事件和属性的列表,如一个figure,axes

问题

Matlab文档告诉您使用WindowButtonDownFcn,WindowButtonMotionFcn等等,以便听取您界面上发生的任何事情.问题是这个属性非常有限,如下所示:

保持变量范围

当MATLAB评估函数句柄时,相同的变量在范围内,就像创建函数句柄时一样.(相反,在基本工作空间中评估指定为字符串的回调.)这简化了在GUI中管理全局数据(如对象句柄)的过程.

是的,如果您不必从ButtonDownFcn重新定义,添加或删除回调,这是完美的,因为如果这样做,您将失去其他函数处理变量范围,因为您在新范围内声明它们可能肯定不会包含你需要的变量.

因此,一种方法是监听事件本身,而不是事件被激活时调用的属性,这样,您就不必费心重新调用ButtonDownFcn以及如何将变量保持在范围内,因为其他解决方案实施起来很慢!.如果我可以直接听取事件,就像我使用handle.listener或使用addlistenermatlab监听工具那样,我就不必为此烦恼了.

一个已知的好方法

其中它似乎是最好的解决方案是这一FEX,其授权弱MATLAB WindowButtonDownFcn,WindowButtonDownFcn和任何属性"监听"功能的MATLAB了,这样就可以有都听你的图形界面改变功能的任何金额,而不必关心,如果您其他函数句柄将丢失其范围变量.

有了这个,我不需要得到matlab事件,因为它包装了我的一切.但仍然让我感到高兴的是,matlab引导用户使用破碎的功能,而不是记录更好的方法,并引导人们将所有东西包裹起来,以便他们可以按照应有的方式使用.


可能有用的信息.

我知道meta.class这将给我一个班级所有的属性,事件等.对于一个继承自以下的类handle:

>> EventMeta = ?Event
EventMeta = 

  class with properties:

                     Name: 'Event'
              Description: ''
      DetailedDescription: ''
                   Hidden: 0
                   Sealed: 0
                 Abstract: 0
          ConstructOnLoad: 0
         HandleCompatible: 1
          InferiorClasses: {0x1 cell}
        ContainingPackage: []
             PropertyList: [64x1 …
Run Code Online (Sandbox Code Playgroud)

reflection matlab user-interface handle event-handling

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

循环语句性能并预先分配循环语句本身

这种观察并不重要,因为浪费在循环语句上的时间性能可能远高于循环本身.但无论如何,我会分享它,因为我搜索并找不到关于此的话题.我总是有这样的印象:预先分配我将循环的数组,然后循环它,将比直接循环它更好,并决定检查它.代码将比较这两个fors之间的效率:

disp('Pure for with column on statement:')
tic
for k=1:N
end
toc

disp('Pure for with column declared before statement:')
tic
m=1:N;
for k=m
end
toc
Run Code Online (Sandbox Code Playgroud)

但我得到的结果是:

Pure for with column on statement:
Elapsed time is 0.003309 seconds.
Pure for with column declared before statement:
Elapsed time is 0.208744 seconds.
Run Code Online (Sandbox Code Playgroud)

为什么会这样?不应该预先分配更快?

事实上,matlab help for说:

因为从不创建索引向量,所以当结束表达式出现在FOR语句中时,长循环可以提高内存效率.

因此,与我的期望相反,for语句中的列表达式更好,因为它不分配向量,因此更快.

我做了以下脚本来测试其他场合我也认为会更快:

% For comparison:
N=1000000;

disp('Pure for loop on cell declared on statement:')
tic
for k=repmat({1},1,N)
end
toc

disp('Pure for loop on …
Run Code Online (Sandbox Code Playgroud)

matlab for-loop while-loop

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

列宽与使用sendmailr从R发送的pander表中的表数据不对齐

我正在使用'pander'和'sendmailr'软件包在电子邮件正文中发送一个小数据框,而不是附件.我想将它发送到一个Gmail帐户.

我很接近,但是列标题不会像他们在Rstudio中那样与电子邮件主体中的列本身对齐 - 例如 - 列标题太宽而不能与它们下面的数据列对齐.

似乎问题是在各种电子邮件客户端中压缩破折号和空格的方式(我在gmail,yahoo和hotmail中通过网络和OS X Mavericks附带的电子邮件客户端尝试了这一点).我能够通过转到"首选项"并选中标记为"使用固定宽度字体显示纯文本消息"的框来解决我的OS X电子邮件客户端中的问题,但我希望它可以在多个设备上工作,具有多个许多同事的客户等等,所以我想知道是否有一种不涉及全球电子邮件设置的方式.

以下是重现问题的代码:

library(sendmailR) # for emails from R
library(pander) # for table-formatting that does not require HTML

results <- head(iris)
pander(results) # widths look great so far...
a = pandoc.table.return(results)
strsplit(a, "\n") # widths still look great...

panderOptions('table.split.table', Inf) # show all columns on same line

msg_content <- mime_part(
  pandoc.table.return(results, style = "multiline")
)

# I'm using my own gmail address for email_from and email_to
sendmail(from = email_from,
         to = email_to, …
Run Code Online (Sandbox Code Playgroud)

r sendmailr pander

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

删除死区或增加子图中的图形大小

我在matlab中遇到了问题.我输出一个图像,如示例所示,并通过print命令保存.我想要做的是保存图像,使得没有死空间,即我想删除保存的图像中的空白区域.

示例: 带死区的图像

黑色边框显示图像占据的总面积.这真是一个空间的浪费.我想删除它.我想要做的是:

没有死区的图像

我手动删除了图像周围的白色区域.但我想通过print命令自动执行此操作.可以吗?如果可能,标题仍然可以吗?即使它被删除然后也没关系,但如果标题可以保持更好.

matlab image-processing subplot

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

用于矩阵乘法的dgemm或dgemv?

我知道dgemv是矩阵向量,但哪个更有效?使用dgemm直接矩阵乘法,或使用dgemv通过与矩阵B的每一列乘以使用矩阵A做矩阵乘法dgemv

performance lapack

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

将 C++ 创建的对象追加到 python 列表并使其由 python 管理

好吧,我已经检查了一段时间,找不到答案。

\n\n

我想附加一个暴露给 python 的对象,比如 Foo:

\n\n
struct Foo {\n  Foo(){ std::cout << "Creating a Foo object" << std::endl;}\n  virtual ~Foo(){ std::cout << "Destroying a Foo object" << std::endl;}\n};\n
Run Code Online (Sandbox Code Playgroud)\n\n

我使用 Foo 继承的对象,有时我想将它们附加到 python 列表中。为此,我创建了一个 FooWrapper,它继承自 Foo 并使用复制构造函数

\n\n
struct FooWrapper : public Foo {\n  FooWrapper(const Foo& foo):Foo(foo){ std::cout << "Creating a copy from foo using FooWrapper" << std::endl;}  \n  virtual ~FooWrapper(){ std::cout << "Destroying a FooWrapper object" << std::endl;}\n};\n
Run Code Online (Sandbox Code Playgroud)\n\n

这是暴露给Python的:

\n\n
BOOST_PYTHON_MODULE(foo_module)\n{\n    using namespace py = boost::python;\n    py::class_<FooWrapper>("FooWrapper", …
Run Code Online (Sandbox Code Playgroud)

boost memory-management list boost-python

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