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

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

採用された回答

交感神経優位なあかべぇ
交感神経優位なあかべぇ 2023 年 7 月 14 日
おそらくそのような方法はないと思います。
一度演算結果を代入する必要があるため、用途にあうか分からないですが、下記の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 件のコメント
交感神経優位なあかべぇ
交感神経優位なあかべぇ 2023 年 7 月 14 日
もしくは、そのような機能を持つ関数を作成する方法もあります。
[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 Center および File ExchangeLogical についてさらに検索

タグ

製品


リリース

R2022a

Community Treasure Hunt

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

Start Hunting!