変数内の行列を取り出​すための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 Kommentare

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

Melden Sie sich an, um zu kommentieren.

 Akzeptierte Antwort

Atsushi Ueno
Atsushi Ueno am 25 Feb. 2022

1 Stimme

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 Kommentare

HF
HF am 28 Feb. 2022
回答して頂きありがとうございます。
よろしければ、追加でご質問よろしいでしょうか?
変数が下記のような場合は、どのように対応すればよろしいでしょうか?
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 am 28 Feb. 2022
そのような場合には変数名のリストを行列からセル配列に変更します。セル配列は異なる型のデータを格納できる配列です。
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 am 1 Mär. 2022
ありがとうございます。
とても参考になりました。

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu MATLAB finden Sie in Hilfe-Center und File Exchange

Produkte

Version

R2018b

Tags

Gefragt:

HF
am 25 Feb. 2022

Kommentiert:

HF
am 1 Mär. 2022

Community Treasure Hunt

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

Start Hunting!