現在、以下の状況です。
A=1200行×3列のtable形式
B=’C’の文字ベクトル
この状況から、C=A[1200行×3列のtable]となるようにしたいのですが、どのようにすべきでしょうか。

 Réponse acceptée

1 vote

変数Bの中の文字列を変数名として格納したいということでしょうか?
少し強引な気がしますが、assigninを無名関数から呼び出してみました。(変数Cをベースワークスペースに保存する用途でしたら、assignin('base' でスマートに実装ができます。)
testFcn();
C = 1200×3 table
Var1 Var2 Var3 ____ ____ ____ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
function testFcn();
tableData = num2cell(zeros(1200, 3), 1);
A = table(tableData{:});
B = 'C';
fcnHdl = @() assignin('caller', B, A);
fcnHdl();
C % 変数Cの内容の確認
end

2 commentaires

Atsushi Ueno
Atsushi Ueno le 15 Déc 2022
同意です。しかし何故 assignin 関数を使ったのか気になったのでコメントしておきます。
eval 関数を使って、やりたい事と1対1に対応したシンプルな書き方に出来ますよ。
temp = zeros(1200,1);
A = table(temp,temp,temp); % A=1200行×3列のtable形式
B = 'C'; % B= C の文字ベクトル
eval([B ' = A;']); % C=A[1200行×3列のtable]となるようにしたい
whos A B C
Name Size Bytes Class Attributes A 1200x3 30223 table B 1x1 2 char C 1200x3 30223 table
美紗子 馬渕
美紗子 馬渕 le 15 Déc 2022
お二方ともご回答いただき、ありがとうございます。
どちらの方法でも実行したかったことができました。
本当にありがとうございました。

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

Produits

Version

R2022a

Community Treasure Hunt

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

Start Hunting!