I want to rounding selected data with Looping and If else
4 ビュー (過去 30 日間)
古いコメントを表示
I have workspace variable "a" which there is a 510x1 matrix data inside like this

I want to change cell containing 10+ only (like 10.0299, 10.0419, 10.0064,.......) change to be 10.0000. And this is my program code and I use rounding function to make 10,+ data change to be 10.0000
n=length(a);
for i=1:n
if(a > 0 & a < 10)
v=(round(a,0))
else
v=a
end
end
After I run the program, there is no change on "a" data (still like that picture), and if I switch "v=(round(a,0))" and "v=a" position and run it, all data in matrix are rounded like 9.0000; 10,0000;....... what's wrong with my code? thank you
1 件のコメント
Stephen23
2023 年 5 月 9 日
" want to change cell containing 10+ only (like 10.0299, 10.0419, 10.0064,.......) change to be 10.0000"
The very simple and very efficient MATLAB approach:
a = min(10,a)
Any other code you can come up with will be slower and more complex than that.
回答 (2 件)
DGM
2023 年 5 月 8 日
編集済み: DGM
2023 年 5 月 8 日
It's not really clear what the desired conditions are.
If what you want is to constrain values to the interval [0 10], you can do that like so:
A = [-1.2 1.2 8.5 12.5];
% using min(max())
B = min(max(A,0),10)
% or using imclamp() (attached)
B = imclamp(A,[0 10])
This keeps values inside the interval unchanged.
Both of these examples do the same thing. The only difference is that the latter is easier to read and less prone to mistakes.
If you only need a one-sided constraint, you can use min() by itself
0 件のコメント
VBBV
2023 年 5 月 8 日
編集済み: VBBV
2023 年 5 月 9 日
a = rand(1)*randi([5 25],510,1)
n=length(a);
for i=1:n
if(a(i) > 0 & a(i) < 10)
a(i) = a(i);
else
a(i) = round(a(i),0);
end
end
a
Use the round function shown as above.
1 件のコメント
VBBV
2023 年 5 月 8 日
Also, when you use a directly in the if-else condition , it refers to all elements in the vector at once.
You need to access individual elements one by one and then round them
参考
カテゴリ
Help Center および File Exchange で Logical についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!