Plug in matrix values into a Formula

조회 수: 8 (최근 30일)
Fredy
Fredy 2014년 5월 22일
답변: Natalya Shedlovskiy 2022년 5월 10일
Hi, can some one help me with the following:
I have matrix U and X
U=[-1.5 -1.0 -.5 0]; X = [1.5 0 0 0 0];
I want to substitute all the values of Big X and Big U into small x and u in following equation:
syms x u; X_E=x^2+*u
and i want my results to be in a matrix form. I was doing the following; however i want to find out a more efficient way to do it
X_Next=[subs(X_E,[x u],[X(1,1) U(1,1)]); subs(X_E,[x u],[X(1,1) U(1,2)]) ;subs(X_E,[x u],[X(1,1) U(1,3)]) ;subs(X_E,[x u],[X(1,1) U(1,4)])]
Thanks a lot in advance.
  댓글 수: 3
Fredy
Fredy 2014년 5월 22일
Thank you
Fredy
Fredy 2014년 5월 22일
편집: Fredy 2014년 5월 22일
How about if lets say my X matrix is [1 2 3 4 5 6] and U is [1 2] and i want to calculate
F(x,u)=F(1,1)
=F(1,2)
=F(2,1)
=F(2,2)
=F(3,1)
=F(3,2) etc.
and display it as a Vector(x rows and u columns)

댓글을 달려면 로그인하십시오.

채택된 답변

dpb
dpb 2014년 5월 22일
편집: dpb 2014년 5월 22일
>> x=1:6;u=1:2;
>> [X,U]=meshgrid(x,u); % make commensurate sizes...
>> f(X(:),U(:)) % evaluate vectors
ans =
2
3
5
6
10
11
17
18
26
27
37
38
>>
  댓글 수: 5
dpb
dpb 2014년 5월 22일
편집: dpb 2014년 5월 22일
We defined the function handle f earlier, remember????
>> f=@(X,U) X.^2+U; % the functional form
f =
@(X,U)X.^2+U
Now we've just evaluated it with a different set of inputs.
Try the above without the (:) on the two arrays to make a vector and see what happens. Also look in detail at the output of meshgrid call and check the doc's on how that works.
Fredy
Fredy 2014년 5월 26일
편집: Fredy 2014년 5월 26일
(Note: i attached the question in a .txt document since the format here does not look very organize)
Could you please look at the attach document. What you see in the tables is what I am trying to do with matlab. So far with your help I am able to come up with all columns except the last two since i do not know how to get the minima of a matrix in a 5 row interval. Do you think i am using the right approach? Here is my code so far.
u=[1 0.5 0 -0.5 -1]; %Given u x = [1.5 1 0.5]; %Given x X_K_1=@(X,U)X+U; %Next State of X(K+1) [X,U]=meshgrid(x,u); % X_LAST=[X_K_1(X(:),U(:))]; % Plugs in all values of x and u into X_K_1
F_1=input('Please enter a value for X: ') % User input is X_LAST.^2 U_1=input('Please enter a value for U: ') %User input is 2.*U.^2
J_2_1=@(X_LAST,U_1)F_1+U_1; %Formula for J_2_1 in terms of F_1 and U_1 function
J_COST=[J_2_1(X_LAST(:),U(:))] % Cost for all values of x and u in formula J_2_1
IF you run this, i Get the following Result: J_COST =
8.2500
4.5000
2.2500
1.5000
2.2500
6.0000
2.7500
1.0000
0.7500
2.0000
4.2500
1.5000
0.2500
0.5000
2.2500
Now, here where I am a bit lost on how i go about selecting the minima of every 5 rows. For example the first minima is from : [ 8.2500 4.5000 2.2500 1.5000 2.2500] which is 1.5.
The next minima will be from row 6 to 10. Etc...
Thank you so much for all your help!

댓글을 달려면 로그인하십시오.

추가 답변 (3개)

dpb
dpb 2014년 5월 27일
편집: dpb 2014년 5월 27일
...how i go about selecting the minima of every 5 rows...
OK, here is where you need to think (and it helps when you get to where you dream in :) ) Matlab--
>> min(reshape(J_COST,5,[])).'
ans =
1.5000
0.7500
0.2500
>>
I'll let you think on that a while... :) HINT: "memory storage order"
  댓글 수: 7
dpb
dpb 2014년 5월 27일
...reshaping J_COST by a new matrix that has J_COST minimun in every 5 rows,
Close, but not, precisely, no...read from the inside out and if needed look at the result of the intermediary steps to see what's happening. As mentioned before, the "how" is significant piece of understanding that will prove to be invaluable going forward in using Matlab. As said before, it's tied into internal storage order in Matlab which is "column major".
Fredy
Fredy 2014년 5월 27일
Thx a lot again dpb, I was able to construct my first table, now i would like to know if its possible to create a Matrix which Looks at matrix Z and scans my State column and once it finds the value equal(or nearest) to my State column of,it will select its corresponding OptimalJ. Also if Z is greater than any value of my state column it will as
For example: for my first value of Z which is 2.5, since its out of range from my state column i want to put a large number maybe 10000 or a blank space that still exist in my matrix. The fourth value of Z is 1.0, so i would like to select 0.75 from my OptimalJ.
T =
State OptimalJ OptimalU
_____ ________ ________
1.5 1.5 -0.5
1 0.75 -0.5
0.5 0.25 0
>> Z =
2.5000
2.0000
1.5000
1.0000
0.5000
2.0000
1.5000
1.0000
0.5000
0
1.5000
1.0000
0.5000
0
-0.5000
so the result will look something like this =
x------------------>blank or large number 1000(
x-----------------> since i will be finding minimuns again.
1.5000
0.7500
0.2500 ....etc
I was playing with find function but i had no success, thanks a lot again!!

댓글을 달려면 로그인하십시오.


dpb
dpb 2014년 5월 27일
interp1(T(:,1),T(:,2),Z,'nearest',NaN)
  댓글 수: 20
dpb
dpb 2014년 6월 1일
One more time...example data, results...
Fredy
Fredy 2014년 6월 3일
dpb, i would like to thank you once again! almost a week ago i knew nothing about matlab, with your help i successfully completed my code, and it worked perfectly!
THANK YOU AGAIN!

댓글을 달려면 로그인하십시오.


Natalya Shedlovskiy
Natalya Shedlovskiy 2022년 5월 10일
how I can plug Major heed losses formula

카테고리

Help CenterFile Exchange에서 Logical에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by