【问题标题】:conversion between Matlab and C++Matlab和C++之间的转换
【发布时间】:2012-10-05 09:42:10
【问题描述】:

将以下 matlab 行转换为 C++ 时遇到困难:

for i=1:height 
  for j=1:width 
    if (match == 0) 
      [min_w, min_w_index] = min(w(i,j,:)); 
      mean(i,j,min_w_index) = double(data(i,j)); 
      sd(i,j,min_w_index) = sd_init; 
    end
    rank = w(i,j,:)./sd(i,j,:); 
    rank_ind = [1:1:C];
  end
end

特别是我不知道如何隐藏“min_w_index”部分。有人可以在这一点上帮助我吗?

【问题讨论】:

  • 你知道 matlab 应该用 [a,b] = min(...) 做什么吗?
  • 是的,它正在寻找最小值,然后我认为将最小值分配给“a”,并将其索引分配给“b”。但我的问题是,我不知道如何转换“索引”部分。
  • 第一部分你是怎么做的? (当然,我可以为您提供答案,但我相信您能够自己弄清楚)
  • 我将通过“for (int k=1;k
  • 嗯,我正在写一个答案,但丹尼尔更快 ;-) 我同意他的观点,这是正常的方式。或者,您可以使用 std::find。语法稍微取决于您使用的数组类型,因此如果您有兴趣,需要将其添加到问题中

标签: c++ matlab for-loop type-conversion


【解决方案1】:

在这种情况下,min 函数最常见的解决方案是

int min_w = w[i][j][0];
int min_w_index = 0;
for (k = 1; k < maxk; k++)
   if (w[i][j][k] < min_w)
   {
       min_w = w[i][j][k];
       min_w_index = k;
   }

不要忘记 C++ 的索引是从零开始的,但 Matlab 是从一开始的。我已经在您的评论中看到了问题。

【讨论】:

    猜你喜欢
    • 2011-05-19
    • 1970-01-01
    • 2010-09-21
    • 1970-01-01
    • 2011-03-09
    • 1970-01-01
    • 1970-01-01
    • 2015-11-26
    • 2023-03-02
    相关资源
    最近更新 更多