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

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

采纳的回答

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

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Logical 的更多信息

标签

产品


版本

R2022a

Community Treasure Hunt

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

Start Hunting!