変数内の行列を取り出​すための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 ExchangeMATLAB についてさらに検索

製品

リリース

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!