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

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

Respuesta aceptada

交感神経優位なあかべぇ
交感神経優位なあかべぇ el 14 de Jul. de 2023
おそらくそのような方法はないと思います。
一度演算結果を代入する必要があるため、用途にあうか分からないですが、下記の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 comentarios
交感神経優位なあかべぇ
交感神経優位なあかべぇ el 14 de Jul. de 2023
もしくは、そのような機能を持つ関数を作成する方法もあります。
[XX, YY, ZZ] = myassign(5*[1;2;3])
XX = 5
YY = 10
ZZ = 15
function varargout = myassign(A)
varargout = num2cell(A);
end
崇史 山田
崇史 山田 el 16 de Jul. de 2023
ご返信ありがとうございます
直接的な方法はないことと、eval や新たな関数定義でできること初めて知りました。
大変勉強になりました。
ありがとうございます。

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre 数値型 en Help Center y File Exchange.

Etiquetas

Productos


Versión

R2022a

Community Treasure Hunt

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

Start Hunting!