Filter löschen
Filter löschen

Substitute syms in 2D array to have 3D array

2 Ansichten (letzte 30 Tage)
Saurav Agarwal
Saurav Agarwal am 22 Dez. 2012
I have a 2D array of syms and I want to substitute the syms variables with 1D array. How do i do it? If a form a loop it takes a long runtime.
sample code:
syms a b c
arr=[0 0 0;0 0 0;a b c];
a=[1 2 3 4 5]';
b=[2 3 4 5 6]';
c=[5 6 7 8 9]';
subs(arr)
The output should be a 3x3x5 matrix. Please help
I have the following code using loops:
syms a b c
arr=[0 0 0;0 0 0;a b c];
J=zeros(3,3,5);
a1=[1 2 3 4 5]';
b1=[2 3 4 5 6]';
c1=[5 6 7 8 9]';
for i=1:5
a=a1(i);
b=b1(i);
c=c1(i);
J(i)=subs(arr);
end

Akzeptierte Antwort

Walter Roberson
Walter Roberson am 22 Dez. 2012
subs() is not able to do this for you, as you need to replicate the other elements of the array. I do not think you will be able to do this without a loop (though you can probably hide the loop using arrayfun())
  1 Kommentar
Walter Roberson
Walter Roberson am 23 Dez. 2012
You initialize J as numeric zeros of size (3,3,5), but you assign to J(i) which would be J(i,1,1) a single numeric location.
Try
syms a b c
arr=[0 0 0;0 0 0;a b c];
a1=[1 2 3 4 5]';
b1=[2 3 4 5 6]';
c1=[5 6 7 8 9]';
J = double( arrayfun(@(aval, bval, cval) subs(arr, {a, b, c}, {aval, bval, cval}), a1, b1, c1) );
You might have to use
J = double( cell2mat( arrayfun(@(aval, bval, cval) subs(arr, {a, b, c}, {aval, bval, cval}), a1, b1, c1, 'Uniform', 0) ));

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Saurav Agarwal
Saurav Agarwal am 23 Dez. 2012
Taking a loop take a lot of time.. is there an alternate way? please help.
  2 Kommentare
Walter Roberson
Walter Roberson am 23 Dez. 2012
I cannot think of any way of doing this that does not involve a loop.
If you show the loop that you have coded, we can examine it and see if we can suggest improvements.
Saurav Agarwal
Saurav Agarwal am 23 Dez. 2012
I have edited the question to show the code using loop.

Melden Sie sich an, um zu kommentieren.

Community Treasure Hunt

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

Start Hunting!

Translated by