# Convert decimal and negative values ​​to integers

조회 수: 1(최근 30일)
Lev Mihailov 2022년 7월 4일
답변: Rik 2022년 7월 4일
There are x and y coordinates that I need to convert to integer values ​​while preserving the meaning of the graph
a = 0:pi/100:2*pi;
x=cos(a);
y = sin(x);
plot(x,y) % first graph
% plot(a,y) % second graph
##### 댓글 수: 12표시숨기기 이전 댓글 수: 11
Lev Mihailov 2022년 7월 4일
@Dyuman Joshi take min and max values, create an array, from -5.4 ; 1.2 to 4.5, fill array from 1 to n(up to 4), where 1 is the smallest value and 4 is the maximum

댓글을 달려면 로그인하십시오.

### 답변(2개)

Matt J 2022년 7월 4일
Something like this, perhaps?
a = 0:pi/100:2*pi;
x=cos(a);
y = sin(x);
fcn=@(z)round(rescale(z,0,intmax('uint16')));
plot(fcn(a),fcn(y))
##### 댓글 수: 0표시숨기기 이전 댓글 수: -1

댓글을 달려면 로그인하십시오.

Rik 2022년 7월 4일
Since all your values are between -1 and 1, you need a method to discretize your data to some arbitrary (but repeatable) indices. You have two general options:
1. Have a linear lookup table. This will map all numbers lineraly to the closest integer.
2. Have a non-linear lookup table. This allows you to decide what data ranges should have more precision.
Below I will implement the simplest version of option 1 I can think of. If you want to increase performance, interp1 may be required.
discretize_values([-1 0 1],3)
ans = 1×3
1 2 3
Now we can apply this to your curve. What I show here is how you can set the precision to influence how jagged your graph will look. Set a higher number for a smoother curve. The mapping back to non-integers should of course be removed if you are planning to use this for indexing.
a=linspace(0,2*pi,200);x=cos(a);y=sin(a);
plot(a,y)
hold on
precision=20;
y2=discretize_values(y,precision);
y2=2*((y2-1)/(precision-1))-1; % map back to non-integers
plot(a,y2)
hold off
function out=discretize_values(in,precision)
% map (-1,1) to 1:precision
if any(in>1) || any(in<-1)
error('data outside expected range')
end
out=1+round((precision-1)*(in+1)/2);
end

댓글을 달려면 로그인하십시오.

### 범주

Find more on Discrete Math in Help Center and File Exchange

R2021a

### Community Treasure Hunt

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

Start Hunting!

Translated by