我正在尝试使用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矩阵初始化的命令吗?请帮忙。