変数内の行列を取り出​すためのfor構文を​作成したい。

aとbという行列の変数があります。この変数の1列目と2列目を取り出すfor構文を作成したいです。
nameにlistの文字列を入れても、変数として認識しないため何か方法はありますか?
list = ['a';'b']
num_list = size(list);
for i=1:1:num_list(1)
name = list(i)
t = name(:,1);
s = name(:,2);
end

댓글 수: 2

Hernia Baby
Hernia Baby 2022년 2월 25일
これですとtとsが更新されます。情報は保持していなくてもいいのでしょうか?
HF
HF 2022년 2월 28일
これをベースにtとsを別処理させるので、問題ございません。

댓글을 달려면 로그인하십시오.

 채택된 답변

Atsushi Ueno
Atsushi Ueno 2022년 2월 25일

1 개 추천

a = ones(1,2);
b = zeros(1,2);
list = ['a';'b'];
num_list = size(list);
for i = 1:1:num_list(1)
name = list(i);
eval(['t = ', name, '(:,1)']);
eval(['s = ', name, '(:,2)']);
end
t = 1
s = 1
t = 0
s = 0

댓글 수: 3

HF
HF 2022년 2월 28일
回答して頂きありがとうございます。
よろしければ、追加でご質問よろしいでしょうか?
変数が下記のような場合は、どのように対応すればよろしいでしょうか?
aa = ones(1,2);
bbb = zeros(1,2);
list = ['aa';'bbb'];
num_list = size(list);
for i = 1:1:num_list(1)
name = list(i);
eval(['t = ', name, '(:,1)']);
eval(['s = ', name, '(:,2)']);
end
Atsushi Ueno
Atsushi Ueno 2022년 2월 28일
そのような場合には変数名のリストを行列からセル配列に変更します。セル配列は異なる型のデータを格納できる配列です。
aa = ones(1,2);
bbb = zeros(1,2);
list = {'aa';'bbb'}; % 角括弧[]を波括弧{}に変更した
num_list = size(list);
for i = 1:1:num_list(1)
name = list{i}; % 丸括弧()を波括弧{}に変更した
eval(['t = ', name, '(:,1)']);
eval(['s = ', name, '(:,2)']);
end
t = 1
s = 1
t = 0
s = 0
HF
HF 2022년 3월 1일
ありがとうございます。
とても参考になりました。

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 MATLAB에 대해 자세히 알아보기

제품

릴리스

R2018b

태그

질문:

HF
2022년 2월 25일

댓글:

HF
2022년 3월 1일

Community Treasure Hunt

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

Start Hunting!