小编m79*_*13d的帖子

使用Eigen的子矩阵和指数

我正在研究一个MATLAB项目,我想用C++和Eigen重新实现计算量最大的部分.我想知道是否有办法执行以下操作(MATLAB语法):

B = A(A < 3);
Run Code Online (Sandbox Code Playgroud)

对于那些不熟悉MATLAB的人,上述命令初始化由A中单元格构成的矩阵B,其值小于3.

我从Eigen论坛的帖子中看到,可以通过以下方式获得感兴趣的指数:

MatrixXi indices = (A.array() < 3).cast<int>();
Run Code Online (Sandbox Code Playgroud)

我想拥有的是:

MatrixXd B = A(A.array() < 3);
Run Code Online (Sandbox Code Playgroud)

谢谢.

c++ vectorization submatrix eigen

14
推荐指数
3
解决办法
9701
查看次数

matlab矩阵科学记法

我现在已经想了一会儿.当Matlab打印矩阵A时,例如,用

一个

它有时会出现在科学记数法中,例如A =

1.0e + 03*

A
Run Code Online (Sandbox Code Playgroud)

有谁知道如何打印正常的浮点数?我已经尝试过格式短,格式长,格式短e,格式长e,但它们都不起作用.有些人会切换格式化,以便科学记数法在单独的条目中,但实际上这些数字并不是那么荒谬,只是打印出来......

matlab scientific-notation notation

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

make_shared是否为每个成员变量执行默认初始化(zero-init)

将普通的旧数据类型和对象作为成员的普通结构(或类).请注意,没有定义默认构造函数.

struct Foo
{
    int x;
    int y;
    double z;
    string str;
};
Run Code Online (Sandbox Code Playgroud)

现在,如果我在堆栈上声明一个实例f并尝试打印其内容:

{
    Foo f;
    std::cout << f.x << " " << f.y << " " << f.z << f.str << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

结果是为x,y和z打印的垃圾数据.并且字符串默认初始化为空. 正如所料.

如果我创建一个shared_ptr<Foo>使用make_shared和打印的实例:

{
    shared_ptr<Foo> spFoo = make_shared<Foo>();
    cout << spFoo->x << " " << spFoo->y << " " << spFoo->z << spFoo->str << endl;
}
Run Code Online (Sandbox Code Playgroud)

然后,x,y和z都是0.这使得它似乎shared_ptr在构造对象实例后对每个成员执行默认初始化(零init).至少这是我用Visual Studio的编译器观察到的.

这是C++的标准吗?或者是否有必要={}在实例化后使用显式构造函数或显式语句来保证所有编译器的零init行为?

c++ initialization shared-ptr c++11

11
推荐指数
2
解决办法
1118
查看次数

ArchLinux docker CI 无法初始化 alpm 库 :: 返回非零代码:255

我是 docker 新手,我尝试创建一个自定义图像,我可以在其中简单地运行,pacman -Syu --noconfirm但出现以下错误:

error: failed to initialize alpm library
(could not find or read directory: /var/lib/pacman/)
The command '/bin/sh -c pacman -Syu --noconfirm' returned a non-zero code: 255
Run Code Online (Sandbox Code Playgroud)

我的 dockerfile 是:

#This is a sample Image 
FROM archlinux

RUN pacman -Syu --noconfirm 
CMD [“echo”,”Image created”] 
Run Code Online (Sandbox Code Playgroud)

archlinux docker dockerfile

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

使用WebAudio API计算Live Mic Audio频率的简单代码

我有网站,我需要显示Live Mic Audio的频率.我有一个这个代码,但它很难理解(它使用傅里叶变换和所有).在一些研究中,我知道getByteFrequencyData()哪个返回音频的频率.有没有人之前使用过Live Mic Audio,最好是在Web Audio API中?

javascript audio frequency-analysis web-audio-api

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

Matlab中混合整数最近最优解

是否有可能找到最接近混合整数问题的解决方案?例如,我想要下面的简化问题:

f = [1;1;1];
intcon = 1:3;

Aeq = [0.99,0.97,0.15];
beq = 0.16;
lb = zeros(3,1);
ub = [1;1;1]; 

x = intlinprog(f,intcon,[],[],Aeq,beq,lb,ub)
Run Code Online (Sandbox Code Playgroud)

返回,x=[0;0;1]因为这是目标值的最接近的整数解0.16.相反,它现在返回

Intlinprog因为没有任何一点满足约束而停止了.

不一定要跑intlinprog.beq例如,如果低,理想情况下也需要工作0.14.

optimization matlab approximation mixed-integer-programming

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

QList 上的 C++11 基于范围的循环中的“容器分离”是什么?这只是性能问题吗?

这个问题包含一些解决该问题的建议,我想更深入地了解问题到底是:

 QList<QString> q;
 for (QString &x: q) { .. }
Run Code Online (Sandbox Code Playgroud)
  1. 除非容器被声明const,否则 Qt 是否会创建列表的副本,然后迭代该副本?这不是最好的,但如果列表很小(比如 10-20 个 QString),这是可以忍受的。
  2. 这仅仅是性能问题还是可能是一些更深层次的问题?假设我们在循环运行时不添加/删除元素。
  3. 循环中值的修改(假设它是一个引用)仍然有效还是从根本上被破坏了?

c++ foreach qt copy-on-write

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

使用QXmlStreamReader读取XML文件

我想使用读取XML文件QXmlStreamReader,但我真的不知道问题出在哪里.我的函数读取第一个标记的内容,但随后停止.

XML文件的形式:

 <?xml version="1.0" encoding="utf-8"?>
    <student>
        <firstName>mina</firstName> 
        <lastName>jina</lastName>
        <grade>13</grade>
    </student>
    <student>
        <firstName>Cina</firstName> 
        <lastName>fina</lastName>
        <grade>13</grade>
    </student>
Run Code Online (Sandbox Code Playgroud)

功能:

void MainWindow::open() {
    QFile file(QFileDialog::getOpenFileName(this,"Open"));
    if(file.open(QIODevice::ReadOnly)) {
        QXmlStreamReader xmlReader;
        xmlReader.setDevice(&file);
        QList<Student> students;
        xmlReader.readNext();
        //Reading from the file
        while (!xmlReader.isEndDocument())
        {
            if (xmlReader.isStartElement())
            {
                QString name = xmlReader.name().toString();
                if (name == "firstName" || name == "lastName" ||
                        name == "grade")
                {
                    QMessageBox::information(this,name,xmlReader.readElementText());
                }
            }else if (xmlReader.isEndElement())
            {
                xmlReader.readNext();
            }
        }
        if (xmlReader.hasError())
        {
            std::cout << "XML error: " << xmlReader.errorString().data() << std::endl;
        } …
Run Code Online (Sandbox Code Playgroud)

c++ xml qt

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

将属性传递给QML Loader创建的对象

我有一个Loader加载另一个qml 的QML

Loader { id: gaugeLoader }

PieMenu {
    id: pieMenu

    MenuItem {
        text: "Add Bar Gauge"
        onTriggered: gaugeLoader.source = "qrc:/Gauges/horizontalBarGauge.qml"
    }
    MenuItem {
        text: "Action 2"
        onTriggered: print("Action 2")
    }
    MenuItem {
        text: "Action 3"
        onTriggered: print("Action 3")
    }
}
Run Code Online (Sandbox Code Playgroud)

我如何可以传递参数来设置ID,width,height等加载的QML的?

qt loader qml

6
推荐指数
2
解决办法
3754
查看次数

在matlab中访问多个结构字段而不循环遍历它

我有一个8x18结构,每个cel包含一个单个事件发生的列向量.我想从单个数组中连接的一些字段中获取数据,而不必循环遍历它.我似乎找不到一种方法来垂直连接我感兴趣的字段在一个数组中.

作为一个例子,我创建了以下结构,每个单元格出现1到5次:

s(62).vector(8,18).heading.occurrences=[1;2;3];
for i=1:62
    for j=1:8
        for k=1:18
            y=ceil(rand(1)*5);
            s(i).vector(j,k).heading.occurrences=rand(y,1);
        end
    end
end
Run Code Online (Sandbox Code Playgroud)

现在,如果想要获得几个单元格中的所有实例,同时保持i常量,i=1以下工作:

ss=s(1).vector([1 26 45]);                     
h=[ss.heading];            
cell2mat({h.occurrences}')
Run Code Online (Sandbox Code Playgroud)

现在我想做同样的事情s,例如s([1 2 3]).vector([1 26 45]),它将如何工作?我试过了xx=s([1 2 3]),yy=xx.vector([1 26 45])但是这会产生错误:

期望从大括号或点索引表达式输出一个,但有3个结果.

矢量操作也可以吗?

matlab matlab-struct

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