How to save a data when something happens
显示 更早的评论
Hello everybody, I am receiving 100 symbols, with values starting from 0 and go to 1. The scenario is like this.
for i=1:100
if Symbolvalue >= 0.5
Nuberofsymbolvalue=i;
end;
end;
I need to save the the first i in which I go above 0.5
Thanks in advance.
回答(3 个)
Image Analyst
2013-11-17
编辑:Image Analyst
2013-11-17
if symbolValue > 0.51
savedSymbolValue = symbolValue;
% Optionally save to a mat file
save(yourMatFileName, 'savedSymbolValue');
end
5 个评论
mahdi safarzadeh
2013-11-17
mahdi safarzadeh
2013-11-17
Image Analyst
2013-11-17
OK, you didn't have any explanation at first so I just went with what I could. Now that I see what you're after I recommend:
Nuberofsymbolvalue = find(Symbolvalue > 0.5, 1, 'first'); % Save the index
No loop over i is needed. If you wanted to find out the value at that index, do this:
theSymbolValue = Symbolvalue(Nuberofsymbolvalue);
though you might want to use Number instead of Nuber (unless Nuber means Number in your language)
mahdi safarzadeh
2013-11-18
Image Analyst
2013-11-18
Please mark the best answer as "Accepted" if you're done with this topic. Thanks.
Umair Nadeem
2013-11-17
编辑:Umair Nadeem
2013-11-17
you can use this
index = 1;
for i = 1:100
if SymbolValue >= 0.5
NumberofSymbolValue[index] = i;
index += 1;
end
end
Valueoffirst_i = NumberofSymbolValue[1];
The first value in array NumberofSymbolValue will show the first i
Hope it helps
4 个评论
Walter Roberson
2013-11-17
MATLAB does not use { and } for grouping: it uses "end" to mark the end of a block.
mahdi safarzadeh
2013-11-17
Image Analyst
2013-11-17
编辑:Image Analyst
2013-11-17
How did it work? Are you programming in C? MATLAB doesn't use [] around array indexes and doesn't have the += operator. Plus, his solution could be done with a non-looping simple call to find like Walter and my solution.
allHighSymbolIndexes = find(Symbolvalue >= 0.5)
mahdi safarzadeh
2013-11-18
Walter Roberson
2013-11-17
find(Symbolvalue >= 0.5, 1, 'first')
2 个评论
mahdi safarzadeh
2013-11-17
Image Analyst
2013-11-17
Just assign the output to something:
firstHighSymbolIndex = find(Symbolvalue >= 0.5, 1, 'first')
theFirstHighSymbol = Symbolvalue(firstHighSymbolIndex);
We don't know why it didn't work because you didn't show your code. The code you used (a for loop) is not vectorized and not as MATLAB-ish but is probably still fast enough.
类别
在 帮助中心 和 File Exchange 中查找有关 Startup and Shutdown 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!