小编Sam*_*rts的帖子

MATLAB编译器与MATLAB编码器

这两者有什么区别?

据我所知,MATLAB编译器将MATLAB代码包装成.exe文件,这样它就可以在不安装MATLAB的情况下使用,只需要MCR.除此之外,MATLAB Builder NE还可用于生成.Net程序集,与.Net框架而不是.exe文件一起使用,但它们仍然需要MCR.

现在我不明白MATLAB Coder用的是什么?它生成C/C++代码.但MATLAB代码是否真的转换为C/C++,还是仅仅像MATLAB编译器那样打包?是否还需要MCR才能运行?

我知道这不是一个编程问题.但我搜索了互联网,但仍然没有找到明确的答案.这些是非常昂贵的产品,所以我想知道我正在进入什么.

matlab matlab-deployment matlab-compiler matlab-coder

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

在Julia中实现自定义基元类型

Julia文档说:

基本类型是具体类型,其数据由普通旧位组成.原始类型的经典示例是整数和浮点值.与大多数语言不同,Julia允许您声明自己的原始类型,而不是仅提供一组固定的内置类型.实际上,标准基元类型都是在语言本身中定义的:

但是,我无法在文档或源代码中或其他任何地方找到如何执行此操作的示例.我正在寻找的是一个如何声明基本类型的示例,以及如何随后通过操作这些位来实现该类型的函数或方法.

有人能指出我的榜样吗?谢谢.


编辑:很清楚如何声明基本类型,因为在文档的上面引用的下面有一些例子.我希望获得有关如何随后操纵它们的信息.例如,假设我想(毫无意义地)实现我自己的原始类型MyInt8.我可以用声明primitive type MyInt8 <: Signed 8 end.但是,我如何随后实现一个myplus操作位内的函数Myint8

PS如果它有帮助,我问的原因不是因为我需要在朱莉娅做任何具体的事情; 我正在设计自己的语言以获得乐趣,并且正在研究其他语言如何实现各种各样的东西.

julia

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

MATLAB:强制doc命令打开指定的引用HTML页面

假设我在一个包中写了一个类,叫做mypackage.myclass.我已经为包和类编写了自己的HTML文档,并将其包含在MATLAB帮助浏览器中,如MATLAB文档中所述.

我可以使用帮助浏览器直接导航到它来显示此HTML文档,但键入doc mypackage.myclass不会显示它; 相反,它显示了一些自动生成的HTML文档helpwin(这是一个很好的功能,但不是我想要的 - 自动生成的文档对我的用户来说太技术了).

如何强制doc显示我的文档,而不是自动生成的文档?

等价的:

当你运行时doc docTopic,在doc命令中com.mathworks.mlservices.MLHelpServices.showReferencePage(docTopic)调用Java类.如果存在参考页面docTopic,它将显示它并返回成功值.如果参考页面不存在,则返回失败值,然后导致helpwin(docTopic)被调用.某处必须有一些目录连接docTopic各个参考HTML文件的值.我如何摆弄该目录 - 或者我可以为我的包创建一个?

MathWorkers和@Yair,请给我足够的无证绳索让我自己:)

matlab

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

表和分类数组,单元格和结构数组之间有什么区别?

在最新版本的MATLAB中,有两种新的数据类型:表和分类数组.

表是适用于保存数据和元数据的新数据类型,可以与混合类型的表格数据一起使用,这些数据通常作为列存储在文本文件或电子表格中.它由行和面向列的变量组成.

分类数组对于保存分类数据非常有用 - 这些数据具有来自离散类别的有限列表的值.

在以前的版本中,我会使用cell和struct数组处理这些用例.这些和新数据类型之间有什么区别?

matlab

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

在MATLAB中定义其他中缀运算符

有没有办法在MATLAB中定义其他中缀运算符?

具体来说,我想定义两个缀运营商-><->(这些符号将是理想的,但它可能是单个字符如果需要的话),它调用函数implies,并iff在以同样的方式&调用and+调用plus.

function z = implies(x, y)
    z = ~x|y;

function z = iff(x, y)
    z = x&y | ~x&~y;
Run Code Online (Sandbox Code Playgroud)

logical如果有必要,我很高兴超载.

matlab

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

如何为我的机器加载内存太大的.mat文件的一部分?

我有一个我想要处理的大.mat文件,但是它太大而不适合单个加载.我想加载它的部分,每次只访问重要的参数.所以我几乎有两个问题:

  1. 如何在不加载的情况下访问mat文件的变量名称?
  2. 如何只将其中一个加载到工作区?

谢谢!

matlab mat-file

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

如何从MATLAB查询物理内核的数量?

有谁知道从MATLAB查询物理内核数量的方法?我特别想获得物理核心数而不是逻辑核心数(当启用超线程时可能会有所不同).

我需要这个方法是跨平台的(Windows和Linux,不关心Mac),但我很乐意使用两个单独的方法和一个switch基于输出的语句computer.

到目前为止,我已经尝试过:

  1. java.lang.Runtime.getRuntime().availableProcessors
  2. System.Environment.ProcessorCount
  3. !wmic cpu get NumberOfCores!wmic cpu get NumberOfLogicalProcessors.

1是跨平台的,但返回逻辑处理器而不是物理处理器的数量.

2仅适用于Windows,并且还返回逻辑处理器而不是物理处理器.

3给出了物理和逻辑处理器,但也只是Windows,虽然我可以从DOS命令窗口成功使用它,但出于某种原因,它似乎从MATLAB运行时会持续一段时间.

matlab operating-system multicore hyperthreading

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

MATLAB类的描述和详细描述属性

内置MATLAB类具有Description和DetailedDescription属性的值:

>> ?handle
ans = 
  meta.class handle
  Package: meta

  Properties:
                     Name: 'handle'
              Description: 'Base class for handle classes'
      DetailedDescription: ''
[snip]
Run Code Online (Sandbox Code Playgroud)

类似地,内置类的某些方法和属性具有相同的属性:

>> a = ?containers.Map;
>> a.PropertyList(1)
ans = 
  meta.property handle
  Package: meta

  Properties:
                   Name: 'Count'
            Description: 'Number of pairs in the collection'
    DetailedDescription: ''
[snip]
Run Code Online (Sandbox Code Playgroud)

如何为我的类/方法/属性设置这些属性?

oop matlab

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

分配默认数组元素时要调用的MATLAB Force构造函数方法

我有一个类,它在构造函数中为对象分配一个不可变的UUID.以下是简化说明:

classdef mytest    
    properties (GetAccess = public, SetAccess = immutable)        
        uuid        
    end    
    properties
        val
    end
    methods        
        function obj = mytest(valIn)
            obj.uuid = char(java.util.UUID.randomUUID.toString);
            if nargin < 1
                valIn = 0;
            end
            obj.val = valIn;
        end
    end
end
Run Code Online (Sandbox Code Playgroud)

这通常很有用,但我刚刚发现了在为数组分配默认元素时MATLAB的行为问题.我曾经假设如果我打字的话

>> a(5) = mytest(2);
Run Code Online (Sandbox Code Playgroud)

构造函数将被调用5次 - 没有输入参数的4次,以填充数组的默认元素1到4,并使用输入参数调用一次2以分配最终元素.

然而,这不是MATLAB所做的 - 而是仅在没有输入的情况下调用构造函数一次,然后将结果复制四次以填充元素1到4(然后按照预期的最终元素).这意味着元素1到4的UUID结尾相同:

>> {a.uuid}'
ans = 
    '4424b91b-0977-4b4c-b18b-c4564875b952'
    '4424b91b-0977-4b4c-b18b-c4564875b952'
    '4424b91b-0977-4b4c-b18b-c4564875b952'
    '4424b91b-0977-4b4c-b18b-c4564875b952'
    'dbb8d862-8a1c-4bf9-876f-ef786e11a896'
Run Code Online (Sandbox Code Playgroud)

事实证明这是我记录的行为,我只是没想到,我有点理解为什么MathWorks选择这样做(你可能不希望分别多次调用无输入构造函数的开销).

但这不是我想要的这个类的行为 - 有没有人知道强制为每个元素调用构造函数的方法?或者您可以建议一个具有所需行为的不同类设计?

PS我确实研究过MATLAB是否可能使用一种copy方法复制这些默认元素- 在这种情况下继承我的类matlab.mixin.Copyable,并覆盖copyElement可能有帮助的行为- 但看起来这不是复制的方式:(.

matlab

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

MATLAB:发现受限制的属性类

MATLAB R2016a引入了一种用于限制对象属性类的文档化机制(我知道还有一种较旧的,不同的,未记录的方法,但我没有使用该方法).例如:

classdef MyClass
    properties
        myProperty RestrictedClass
    end
end
Run Code Online (Sandbox Code Playgroud)

将限制属性myProperty,使其值必须是类RestrictedClass.

如果你已经实现了这样的类,有没有办法使用MATLAB的类元数据接口以编程方式发现受限制属性的类?

如果我使用的话,我希望如此

m = ?MyClass;
p = m.PropertyList(1);
Run Code Online (Sandbox Code Playgroud)

然后metaproperty对象p将包含有关它被限制的类的信息 - 但似乎没有.

有没有办法以编程方式发现它?该方法不需要涉及实际实例化类 - 因为它可能有副作用,也因为它需要使用Abstract类.

PS也不涉及解析类的源代码的任何事情.想象一下,我可能想要使用其源代码已被混淆的类来完成此操作pcode.

oop matlab

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