How do I prevent rewriting of data in my structure array within a for loop?

1 回表示 (過去 30 日間)
Keerthana Natarajan
Keerthana Natarajan 2022 年 11 月 12 日
コメント済み: Stephen23 2022 年 11 月 15 日
Hello,
I have a for loop running as show below. The goal is for the data to be added as a new row to the fields with every loop run. Currently, it is rewriting previous rows from the loops run as 0. How do I preserve the data collected while adding to it?
if buttoncounter<=5
for i=1:buttoncounter
r1(buttoncounter)=randi(length(gettrialone));
r2(buttoncounter)=randi(length(paytrialone));
set(messaget1g1,'String',sprintf('Collect $%d and pay a fine of $%d',...
[gettrialone(r1(buttoncounter)),paytrialone(r2(buttoncounter))]))
get(buttonA,'Enable');set(buttonA,'Enable','off');
get(buttonB,'Enable');set(buttonB,'Enable','off');
datat1g1(buttoncounter).Button_Pressed(buttoncounter,1)='B';
datat1g1(buttoncounter).Earned(buttoncounter,1)=gettrialone(r1(buttoncounter));
datat1g1(buttoncounter).Fee(buttoncounter,1)=paytrialone(r2(buttoncounter));
end
end

回答 (1 件)

Chris
Chris 2022 年 11 月 12 日
編集済み: Chris 2022 年 11 月 12 日
Perhaps something like:
if buttoncounter<=5
LEN = numel(data1g1);
for i=1:buttoncounter
% ...
data1g1(buttoncounter).Button_Pressed(LEN+buttoncounter,1)='B';
% ...
end
end
  5 件のコメント
Chris
Chris 2022 年 11 月 15 日
@Keerthana Natarajan it sounds like your code is in a callback/function. Variables created in a function are forgotten when the function completes. Persistent variables are one option to set scope; best practice is to pass the variables you want to keep into and out of the function as arguments.

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

カテゴリ

Help Center および File ExchangeLoops and Conditional Statements についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by