行ベクトルの要素の一括代入

41 vues (au cours des 30 derniers jours)
崇史 山田
崇史 山田 le 14 Juil 2023
Commenté : 崇史 山田 le 16 Juil 2023
以下を実行するとエラーになります。
B= [1;2];
[XX; YY] = B;
下の様にそれぞれの要素毎に代入すればできることは理解しています。
XX = B(1);
YY=B(2);
正確にはBという変数を作らず、行ベクトルとなっている演算結果の要素を違う変数に入れたいと
考えています。
例えば以下の様なイメージのことを実現したいです。
[XX; YY] = A*[1;2;1];
一旦配列に格納せず、同じ演算を繰り返さない良い方法をご教示いただけないでしょうか?

Réponse acceptée

交感神経優位なあかべぇ
おそらくそのような方法はないと思います。
一度演算結果を代入する必要があるため、用途にあうか分からないですが、下記のevalを使用した方法はどうでしょうか?
varNames = {'AA'; 'BB'; 'CC'; 'EE'};
A= 5 * [1;2;3;4];
for i = 1 : length(A)
eval([varNames{i}, '= A(', num2str(i), ')'])
end
AA = 5
BB = 10
CC = 15
EE = 20
  2 commentaires
交感神経優位なあかべぇ
もしくは、そのような機能を持つ関数を作成する方法もあります。
[XX, YY, ZZ] = myassign(5*[1;2;3])
XX = 5
YY = 10
ZZ = 15
function varargout = myassign(A)
varargout = num2cell(A);
end
崇史 山田
崇史 山田 le 16 Juil 2023
ご返信ありがとうございます
直接的な方法はないことと、eval や新たな関数定義でできること初めて知りました。
大変勉強になりました。
ありがとうございます。

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Logical dans Help Center et File Exchange

Produits


Version

R2022a

Community Treasure Hunt

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

Start Hunting!