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

26 ビュー (過去 30 日間)
HF
HF 2022 年 2 月 25 日
コメント済み: HF 2022 年 3 月 1 日
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 日
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 件のコメント
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 件)

カテゴリ

Help Center および File ExchangeMATLAB についてさらに検索

タグ

製品


リリース

R2018b

Community Treasure Hunt

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

Start Hunting!