【问题标题】:Matlab: How to use all the values of a matrix in a functionMatlab:如何在函数中使用矩阵的所有值
【发布时间】:2014-09-08 11:23:58
【问题描述】:

我是 Matlab 和编程的新手,我希望有人可以帮助我解决我遇到的问题,或为我指明正确的方向。

我有一个来自热图像的 240x320 矩阵 (tempK)。矩阵中的每个单元格都包含来自热图像的共同赞助像素的温度值。我定义了以下函数:

function out=Planck_radconvers(lambda_,tempK)
C1 = 1.19e-16;
C2 = 1.44e-2;

out=C1/(lambda_^5*(exp(C2/(lambda_*tempK))-1))*1e-6;
end

然后我尝试通过应用以下内容来使用此功能:

rad=planck(10.25e-6,tempK)

问题是我只能弄清楚如何让“rad”输出“tempK”中单个单元格的结果。但是我需要它为“tempK”中的每个单元格执行此操作,并且我需要“rad”的输出与“tempK”的尺寸相同(即,我需要“tempK”中的每个转换后的值都具有相同的单元格“rad”中的位置)。

对此的任何帮助将不胜感激。

【问题讨论】:

  • 在您的函数定义和示例中,您弄乱了函数的名称。
  • 在 Matlab 中 / 与在 RHS 倒置的情况下进行矩阵乘法相同。如果要除以每个元素,请使用 ./

标签: matlab function matrix


【解决方案1】:

要按元素进行运算,请在每个符号前使用点来指定矩阵运算。

./
.*
.^

【讨论】:

    【解决方案2】:

    你可以用两个循环来做到这一点 您只需要添加两个循环并分别计算每个单元格:

    function out=Planck_radconvers(lambda_,tempK)
    C1 = 1.19e-16;
    C2 = 1.44e-2;
    for i = 1:m
      for j = 1:n
         out(i,j)=C1/(lambda_^5*(exp(C2/(lambda_*tempK(i,j)))-1))*1e-6;
      end
    end
    end
    

    【讨论】:

      猜你喜欢
      • 2015-03-06
      • 2015-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-17
      • 1970-01-01
      • 2012-11-25
      • 1970-01-01
      相关资源
      最近更新 更多