How to make multiple execution of a code by loop ?

2 ビュー (過去 30 日間)
Ivan Mich
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
T=readtable('Outputresults.txt')
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'.
Could you please help me?

回答 (2 件)

DGM
DGM 2021 年 4 月 13 日
編集済み: DGM 2021 年 4 月 13 日
Well, since I don't know what the error message was, then I'll just guess it was this.
T=readtable('Outputresults.txt')
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
Ivan Mich 2021 年 4 月 13 日
編集済み: Ivan Mich 2021 年 4 月 13 日
The error is:
Undefined operator '+' for input arguments of type 'table'.
Could you please help me?

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


Walter Roberson
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 件のコメント
Ivan Mich
Ivan Mich 2021 年 4 月 13 日
command window shows me:
Error using writetable (line 155)
Writing nested tables/timetables is not supported. Use SPLITVARS on the nested table
before writing.
Error in code (line 52)
writetable(TABLE,['results' num2str(i) '.txt'],'Delimiter',' ')
Could you help me?
Walter Roberson
Walter Roberson 2021 年 4 月 13 日
T = readtable('Outputresults.txt');
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 = readtable('Outputresults.txt');
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

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

カテゴリ

Help Center および File ExchangeData Type Conversion についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by