<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>