putting a sequence of text values into a multivariable function.

1 回表示 (過去 30 日間)
Jaime Rafael Hernandez Pallares
Jaime Rafael Hernandez Pallares 2021 年 11 月 24 日
回答済み: Shanmukha Voggu 2021 年 12 月 1 日
The problem is easy, but i dont find the solution.
Lets say we want combine some vectors: a1, a2, a3.
a1 = [1,2,3];
a2 = [21,22,23];
a3 = [31,32];
Comb = combvec(a1,a2,a3);
for that we can use the function Comb = combvec(a1,a2,a3). So the solution is:
a =
1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3
21 21 21 22 22 22 23 23 23 21 21 21 22 22 22 23 23 23
31 31 31 31 31 31 31 31 31 32 32 32 32 32 32 32 32 32
which is the vector of all the posible combinations.
Now, lets supouse that there is a case where we dont know how many vectors we have ( they are generated while running ).
However, we can get a char with the name of those vectors like:
n = 3;
final=[];
for k=1:3
if n >= 2
Data = ['a' num2str(k) ','];
n=n-1;
else
Data = ['a' num2str(k)];
end
final=strcat(final,Data);
end
Comb = combvec(final).
And the result of this is operation is a single char: final = ('a1,a2,a3');
But if we try to insert this array into the function like: Comb = combvec(final). We will get this result:
a =
'a1,a2,a3'
Can someone help me to solve it?
Thanks

回答 (1 件)

Shanmukha Voggu
Shanmukha Voggu 2021 年 12 月 1 日
Hi Jamie,
I understood that you want to process a char that contains the variable names of matrices separated by commas
This can be achieved by calling combvec multiple times
a1 = [1,2,3];
a2 = [21,22,23];
a3 = [31,32];
% The code below assumes the variable names mentioned in "inputString"
% are already inside the workspace
inputString='a1,a2,a3';
matrixNames=split(inputString,",")% split the string using delimiter as comma
matrixNames = 3×1 cell array
{'a1'} {'a2'} {'a3'}
answer=eval(matrixNames{1});% initialize the answer variable
for i = 2:length(matrixNames)
secondMatrix=eval(matrixNames{i});% evaluate the expression
answer=combvec(answer,secondMatrix);
end
answer
answer = 3×18
1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 21 21 21 22 22 22 23 23 23 21 21 21 22 22 22 23 23 23 31 31 31 31 31 31 31 31 31 32 32 32 32 32 32 32 32 32
Refer this for more information.

カテゴリ

Help Center および File ExchangeLogical についてさらに検索

製品


リリース

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by