元素乘法和使用特征库初始化3D矩阵变量

时间:2018-03-10 14:42:08

标签: c++ matlab eigen eigen3

我正在尝试使用Eigen库将我的Matlab代码转换为C ++,并且我被困在我必须初始化3维变量SMat(26x10x181的顺序)的部分,数据类型为2,来自2维变量S(顺序) 10x181)。而且我似乎得到了错误,我需要用Freq(26x1阶)和延迟(181x10)的向量乘法来执行标量。我很困惑如何使用delay(angle,:)中的特征库来表示下面的matlab代码中给出的S(:,angle)StMat(iFreq,:,angle)for loops

for freqBin=1:26
    for angle=1:181
        S(:,angle)=exp(-1i*(Freq(freqBin).*delay(angle,:)')); %1st command 
    end 
    SMat(freqBin,:,:)=S;%2nd command
end
%%
 for freqBin=1:26
        for angle=1:181
 StM(:,1) = StMat(iFreq,:,angle);%3rd command---- order of StM 10x1

在我的C ++代码中,Freq是数据类型VectorXd(因为我使用了setLinspaced()作为其定义),而延迟是数据类型MatrixXd。我试图使用.cwiseProduct()但它导致错误。我引用this site,但所提到的例子的输出给了我一个5x5矩阵满47. 10的效果是不可见的。任何人都可以建议我逐个元素乘法和3D矩阵初始化的命令吗?请帮忙。

0 个答案:

没有答案