How to check condition element by element till satisfied
1 次查看(过去 30 天)
显示 更早的评论
if true
clc
clear all
format compact
a = ones(5)
w_rand = rand()
if w_rand > 0.5
a = -1
end
I want to generate random numbers for each element. now in the first condition the elements which get w_rand > 0 should flip to -1 and its value is fixed. now again the w_rand should be generated for the remaining 1 which satisfy the condition of w_rand should flip to -1. and the process goes on till the time all 1 goes to -1. in my code the all values change to -1 at once. where as i want to do this element by element
1 个评论
Image Analyst
2016-5-8
"a" is a 5-by-5 array of random numbers. In your "first condition" you get an random number and check if it's greater than 0.5 and then "the elements" get set to -1. WHICH elements should get flipped? All of them? Some of them? Is so, which ones? All you're doing is changing "a" from a 5-by-5 array to a single scalar number. Anyway, you're going to need a while loop and the all() function to check that every element in "a" got set to -1.
采纳的回答
Elias Gule
2016-5-9
I hope this is what you're looking for:
a = ones(5);
sz = size(a);
a = a(:);
count = 0;
isDebug = true; %%So you know the while loop is running
for kk = 1 : length(a)
akk = a(kk);
while rand() < 0.5
if isDebug
fprintf('a(%d) = %d;\n',kk,akk);
end
end
a(kk) = -1;
end
a = reshape(a,sz);
0 个评论
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Graphics Object Properties 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!