How to make multiple execution of a code by loop ?
2 views (last 30 days)
Show older comments
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?
0 Comments
Answers (2)
DGM
on 13 Apr 2021
Edited: DGM
on 13 Apr 2021
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
Walter Roberson
on 13 Apr 2021
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 Comments
Walter Roberson
on 13 Apr 2021
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
See Also
Categories
Find more on Data Type Conversion in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!