Info
此问题已关闭。 请重新打开它进行编辑或回答。
i need a program in matlab..??
1 次查看(过去 30 天)
显示 更早的评论
I have values like:
0-56 it should multiply with 92.5,
57-112 it should multiply with 95.2,
113-168 it should multiply with 95.8,
169-225 it should multiply with 95.9.
I need a program for these conditions. Please help me friends...
0 个评论
回答(3 个)
Walter Roberson
2015-5-21
histc with the two outputs to figure out which range you are in. Use the bin number to index a vector of constants to multiply.
5 个评论
Andrei Bobrov
2015-5-21
a = [92.5,95.2,95.8,95.9]';
x = randi(225,15,1);
[~,ii] = histc(x,[0,57,113,169,225]);
out = x.*a(ii);
2 个评论
Image Analyst
2015-5-21
Here's another approach that does what (I think) you said :
% Make up some sample data
numElements = 100;
maxValue = 200; % Whatever
% Create sample data.
data = maxValue * rand(1, numElements);
% 0-56 it should multiply with 92.5,
% 57-112 it should multiply with 95.2,
% 113-168 it should multiply with 95.8,
% 169-225 it should multiply with 95.9.
% Do the algorithm.
% 0-56 it should multiply with 92.5,
logicalVector = data >= 0 & data < 56;
data(logicalVector) = data(logicalVector) * 92.5;
% 57-112 it should multiply with 95.2,
logicalVector = data >= 57 & data < 112;
data(logicalVector) = data(logicalVector) * 95.2;
% 113-168 it should multiply with 95.8,
logicalVector = data >= 113 & data < 168;
data(logicalVector) = data(logicalVector) * 95.8;
% 169-225 it should multiply with 95.9.
logicalVector = data >= 169 & data < 225;
data(logicalVector) = data(logicalVector) * 95.9;
Note that if your data is floating point, there are some gaps in your ranges, like values between 56 and 57 don't get multiplied by anything. However if you just have integers, that's not a problem
0 个评论
此问题已关闭。
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!