<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <div class="moz-cite-prefix">On 19/12/2013 08:59, Dang, Christophe
      wrote:<br>
    </div>
    <blockquote
cite="mid:3B5FFC67498DFF49AE7271A584867D16F325B3C87F@301EX00100.sidel.com"
      type="cite">
      <pre wrap="">Dear all,

I often have to work with 2-variable functions,
e.g. from equations of state involving pressure and temperature.

I have a range of P and T and build line vectors,
with linspace() or v1:p:v2.

The Kronecker product allows an easy build of P*T

P'.*.T
->
[P(1)*T(1) P(1)*T(2)
P(2)*T(1) P(2)*T(2)]

Now, I'd like to have the same thing with the sum,
without using a loop
(of course it's not the sum only,
there are adequate coefficients
and it's possibly enclosed in a exp() function or so).

A colleague of mine suggested the following way
which works well:

sP = size(P, "c");
sT = size(T, "c");

P_matrix = P'*ones(1, sT);
T_matrix = T*ones(sP, 1);

P_matrix + T_matrix
->
[P(1)+T(1) P(1)+T(2)
P(2)+T(1) P(2)+T(2)]

Now my question:

is there a more convenient way to do this,
and especially,
if I want to generate a f(P, T) matrix,
do I have to build P_matrix and T_matrix and perform

f(P_matrix, T_matrix)

or is there a way to get it directly from the P and T vectors?

</pre>
    </blockquote>
    Hi<br>
    <br>
    I believe the most convinient think to do is to write a function.<br>
    <br>
    Here is an example that works for the sum, but also any arbitrary
    function f:<br>
    <br>
    <br>
    <meta http-equiv="Content-Type" content="text/html;
      charset=ISO-8859-1">
    <div style="float: left; white-space: pre; line-height: 1;
      background: #FFFFFF; "><span class="sc24">
      </span>
      <meta http-equiv="Content-Type" content="text/html;
        charset=ISO-8859-1">
      <div style="float: left; white-space: pre; line-height: 1;
        background: #FFFFFF; "><span class="sc24">
        </span><span class="sc14">function</span><span class="sc24"> </span><span
          class="sc0">y</span><span class="sc24"> </span><span
          class="sc12">=</span><span class="sc24"> </span><span
          class="sc0">map_fun</span><span class="sc12">(</span><span
          class="sc0">P</span><span class="sc12">,</span><span
          class="sc0">T</span><span class="sc12">,</span><span
          class="sc0">f</span><span class="sc12">)</span><span
          class="sc24"> </span><span class="sc0">sP</span><span
          class="sc24"> </span><span class="sc12">=</span><span
          class="sc24"> </span><span class="sc7">size</span><span
          class="sc12">(</span><span class="sc0">P</span><span
          class="sc12">,</span><span class="sc24"> </span><span
          class="sc16">"c"</span><span class="sc12">)</span><span
          class="sc24">
        </span><span class="sc0">sT</span><span class="sc24"> </span><span
          class="sc12">=</span><span class="sc24"> </span><span
          class="sc7">size</span><span class="sc12">(</span><span
          class="sc0">T</span><span class="sc12">,</span><span
          class="sc24"> </span><span class="sc16">"c"</span><span
          class="sc12">)</span><span class="sc24">
        </span><span class="sc0">P_</span><span class="sc12">=</span><span
          class="sc24"> </span><span class="sc0">P</span><span
          class="sc12">'*</span><span class="sc7">ones</span><span
          class="sc12">(</span><span class="sc3">1</span><span
          class="sc12">,</span><span class="sc24"> </span><span
          class="sc0">sT</span><span class="sc12">)</span><span
          class="sc24">
        </span><span class="sc0">T_</span><span class="sc24"> </span><span
          class="sc12">=</span><span class="sc24"> </span><span
          class="sc7">ones</span><span class="sc12">(</span><span
          class="sc0">sP</span><span class="sc12">,</span><span
          class="sc24"> </span><span class="sc3">1</span><span
          class="sc12">)*</span><span class="sc0">T</span><span
          class="sc24">
        </span><span class="sc0">y</span><span class="sc24"> </span><span
          class="sc12">=</span><span class="sc24"> </span><span
          class="sc0">f</span><span class="sc12">(</span><span
          class="sc0">P_</span><span class="sc12">,</span><span
          class="sc0">T_</span><span class="sc12">)</span><span
          class="sc24"> </span><span class="sc14">endfunction</span><span
          class="sc24"> </span><span class="sc14">function</span><span
          class="sc24"> </span><span class="sc0">y</span><span
          class="sc12">=</span><span class="sc0">somme</span><span
          class="sc12">(</span><span class="sc0">a</span><span
          class="sc12">,</span><span class="sc0">b</span><span
          class="sc12">)</span><span class="sc24"> </span><span
          class="sc0">y</span><span class="sc12">=</span><span
          class="sc0">a</span><span class="sc12">+</span><span
          class="sc0">b</span><span class="sc24">
        </span><span class="sc14">endfunction</span><span class="sc24">
        </span><span class="sc14">function</span><span class="sc24"> </span><span
          class="sc0">y</span><span class="sc12">=</span><span
          class="sc0">power</span><span class="sc12">(</span><span
          class="sc0">a</span><span class="sc12">,</span><span
          class="sc0">b</span><span class="sc12">)</span><span
          class="sc24"> </span><span class="sc0">y</span><span
          class="sc12">=</span><span class="sc0">a</span><span
          class="sc12">.^</span><span class="sc0">b</span><span
          class="sc24">
        </span><span class="sc14">endfunction</span><span class="sc24">
        </span><span class="sc0">P</span><span class="sc24"> </span><span
          class="sc12">=</span><span class="sc24"> </span><span
          class="sc7">linspace</span><span class="sc12">(</span><span
          class="sc3">3</span><span class="sc12">,</span><span
          class="sc3">30</span><span class="sc12">,</span><span
          class="sc3">7</span><span class="sc12">)</span><span
          class="sc24">
        </span><span class="sc0">T</span><span class="sc24"> </span><span
          class="sc12">=</span><span class="sc24"> </span><span
          class="sc7">linspace</span><span class="sc12">(</span><span
          class="sc3">0</span><span class="sc12">,</span><span
          class="sc3">15</span><span class="sc12">,</span><span
          class="sc3">7</span><span class="sc12">)</span><span
          class="sc24">
        </span><span class="sc0">map_fun</span><span class="sc12">(</span><span
          class="sc0">P</span><span class="sc12">,</span><span
          class="sc0">T</span><span class="sc12">,</span><span
          class="sc0">somme</span><span class="sc12">)</span><span
          class="sc24">
        </span><span class="sc12">[</span><span class="sc16">"+"</span><span
          class="sc24"> </span><span class="sc7">string</span><span
          class="sc12">(</span><span class="sc0">P</span><span
          class="sc12">);</span><span class="sc24"> </span><span
          class="sc7">string</span><span class="sc12">(</span><span
          class="sc0">T</span><span class="sc12">')</span><span
          class="sc24"> </span><span class="sc7">string</span><span
          class="sc12">(</span><span class="sc0">map_fun</span><span
          class="sc12">(</span><span class="sc0">P</span><span
          class="sc12">,</span><span class="sc0">T</span><span
          class="sc12">,</span><span class="sc0">somme</span><span
          class="sc12">))]</span><span class="sc24">
        </span><span class="sc12"><br>
          <br>
          <br>
          <br>
          !+ 3 7.5 12 16.5 21 25.5 30 !<br>
          ! !<br>
          !0 3 5.5 8 10.5 13 15.5 18 !<br>
          ! !<br>
          !2.5 7.5 10 12.5 15 17.5 20 22.5 !<br>
          ! !<br>
          !5 12 14.5 17 19.5 22 24.5 27 !<br>
          ! !<br>
          !7.5 16.5 19 21.5 24 26.5 29 31.5 !<br>
          ! !<br>
          !10 21 23.5 26 28.5 31 33.5 36 !<br>
          ! !<br>
          !12.5 25.5 28 30.5 33 35.5 38 40.5 !<br>
          ! !<br>
          !15 30 32.5 35 37.5 40 42.5 45 !<br>
          <br>
          <br>
        </span><br>
        <span class="sc12"><span class="sc12">[</span><span class="sc16">"^"</span><span
            class="sc24"> </span><span class="sc7">string</span><span
            class="sc12">(</span><span class="sc0">P</span><span
            class="sc12">);</span><span class="sc24"> </span><span
            class="sc7">string</span><span class="sc12">(</span><span
            class="sc0">T</span><span class="sc12">')</span><span
            class="sc24"> </span><span class="sc7">string</span><span
            class="sc12">(</span><span class="sc0">map_fun</span><span
            class="sc12">(</span><span class="sc0">P</span><span
            class="sc12">,</span><span class="sc0">T</span><span
            class="sc12">,</span><span class="sc0">power</span><span
            class="sc12">))]</span><br>
          <br>
          <br>
          !^ 3 7.5 12 16.5 21 25.5 30 !<br>
          ! !<br>
          !0 1 15.588457 243 3787.9951 59049 920482.81 14348907 !<br>
          ! !<br>
          !2.5 1 154.04697 23730.469 3655606.8 5.631D+08 8.675D+10
          1.336D+13 !<br>
          ! !<br>
          !5 1 498.83063 248832 1.241D+08 6.192D+10 3.089D+13 1.541D+16
          !<br>
          ! !<br>
          !7.5 1 1105.8847 1222981 1.352D+09 1.496D+12 1.654D+15
          1.829D+18 !<br>
          ! !<br>
          !10 1 2020.9159 4084101 8.254D+09 1.668D+13 3.371D+16
          6.812D+19 !<br>
          ! !<br>
          !12.5 1 3283.6015 10782039 3.540D+10 1.163D+14 3.817D+17
          1.253D+21 !<br>
          ! !<br>
          !15 1 4929.503 24300000 1.198D+11 5.905D+14 2.911D+18
          1.435D+22 !<br>
          <br>
          Cheer<br>
          <br>
          Adrien Vogt-Schilb<br>
          <br>
        </span></div>
      <title>Exported from Notepad++</title>
      <style type="text/css">
span {
        font-family: 'Courier New';
        font-size: 10pt;
        color: #000000;
}
.sc0 {
}
.sc3 {
        color: #EFA238;
}
.sc7 {
        font-style: italic;
}
.sc12 {
        color: #C600C6;
}
.sc14 {
        color: #FF0000;
}
.sc16 {
        color: #0080C0;
}
.sc24 {
}
</style></div>
  </body>
</html>