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

조회 수: 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];
一旦配列に格納せず、同じ演算を繰り返さない良い方法をご教示いただけないでしょうか?

채택된 답변

交感神経優位なあかべぇ
おそらくそのような方法はないと思います。
一度演算結果を代入する必要があるため、用途にあうか分からないですが、下記の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!