# How to make multiple execution of a code by loop ?

1 ビュー (過去 30 日間)
Ivan Mich 2021 年 4 月 12 日
コメント済み: Walter Roberson 2021 年 4 月 13 日
Hello,
I have a code that uses one equation in order to take an output file. I use for my calculations randn so in each running of my code I have dofferent results. I would like to export for 100 executes of my code 100 outputs. I used this code
clc
clear
A=T(:,1)
B=T(:,2)
x=T(:,3)
x=table2array(x)
for i=1:100
y=randn +x
x=array2table(x)
y=array2table(y)
TABLE=[A B x y]
TABLE.Properties.VariableNames(1:6) = {'A','B','x','y'}
writetable(TABLE,['results' num2str(i) '.txt'],'Delimiter',' ')
end
but command window shows me error after the first execution.
The error is:
Undefined operator '+' for input arguments of type 'table'.

サインインしてコメントする。

### 回答 (2 件)

DGM 2021 年 4 月 13 日

Well, since I don't know what the error message was, then I'll just guess it was this.
A=T(:,1);
B=T(:,2);
xt=T(:,3);
x=table2array(xt); % you don't need to convert it back to a table a 100 times.
for i=1:100
y=randn+x;
y=array2table(y);
TABLE=[A B xt y]; % just use the table copy of x
TABLE.Properties.VariableNames(1:4) = {'A','B','x','y'}; % you were assigning 4 things to 6 elements
writetable(TABLE,['results' num2str(i) '.txt'],'Delimiter',' ');
end
##### 1 件のコメント表示非表示 なし
Ivan Mich 2021 年 4 月 13 日
The error is:
Undefined operator '+' for input arguments of type 'table'.

サインインしてコメントする。

Walter Roberson 2021 年 4 月 13 日
Replace
x=array2table(x)
y=array2table(y)
TABLE=[A B x y];
TABLE.Properties.VariableNames(1:4) = {'A','B','x','y'};
with
TABLE = table(A, B, x, y);
##### 3 件のコメント表示非表示 2 件の古いコメント
Walter Roberson 2021 年 4 月 13 日
T.Properties.VariableNames{1} = 'A';
T.Properties.VariableNames{2} = 'B';
T.Properties.VariableNames{3} = 'x';
xt = T{:,3};
for i = 1:10
T.y = randn + xt;
writetable(TABLE,['results' num2str(i) '.txt'],'Delimiter',' ');
end
Questions:
• are you sure you want to add a scalar random number each time, so you are adding the same number to each row of x? Or do you want to add a different random number to each row of x?
• when you add a random number, are you wanting to each time be using the data read in as the base? Or are you wanting to accumulate random numbers, so that the second output ?
%like the above, but the random numbers accumulate. And different one for
%each row
T.Properties.VariableNames{1} = 'A';
T.Properties.VariableNames{2} = 'B';
T.Properties.VariableNames{3} = 'x';
xt = T{:,3};
nxt = length(xt);
for i = 1:10
xt = randn(nxt,1) + xt;
T.y = xt;
writetable(TABLE,['results' num2str(i) '.txt'],'Delimiter',' ');
end

サインインしてコメントする。

### Community Treasure Hunt

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

Start Hunting!