用向量编写算法的问题
-(void)userShow{
vector<CGPoint>::iterator it;
vector<CGPoint>* xp = x.graphPoints;
vector<CGPoint>* yp = y.graphPoints;
xVal = new vector<double>();
yVal = new vector<double>();
xyVal = new vector<double>();
xxVal = new vector<double>();
value = new vector<double>();
c = new vector<double>();
for(it = xp->begin(); it != xp->end(); ++it){
xVal->push_back(it->y);
xxVal->push_back(it->x);
}
for(it = yp->begin(); it != yp->end(); ++it){
xyVal->push_back(it->x);
}
for (int i = 0; i < xVal->size(); i++){
c = xVal[i];
while (xyVal[c] < xxVal[i];){
c++;
if ((c-1)<=xxVal[i]<=c){
double value = xp[c-1] + (xp[c] - yp[c-1])*(xxVal[i] - xyVal[c-1])/(xyVal[c] - xyVal[c-1]);
}
yVal->push_back(value);
}
}
UserGraph->removeAllData();
UserGraph->addDataSet(xVal, yVal, [UIColor redColor], 0, false, true, 2);
UserGraph->updateAll();
}
上面是我希望发生的事情的伪代码。我在理解向量方面仍然存在问题。正如您在上面所看到的,yVal = "..." 使用 vector
和 vector
的二进制表达式存在问题。
该算法的作用是在两个图 x(t)
和 y(t)
上画一条线,然后获取 x(t)
code> 的 y
坐标并将其转换为新的向量。之后的第二段时间,它需要将 x(t)
的 x
坐标与 y(t)
进行比较 x
坐标来获取 y
坐标。当x(t)
的x和y(t)
x
不匹配时,需要执行yVal
= 算法。
有人可以帮我将伪代码转换为工作代码吗?干杯
-(void)userShow{
vector<CGPoint>::iterator it;
vector<CGPoint>* xp = x.graphPoints;
vector<CGPoint>* yp = y.graphPoints;
xVal = new vector<double>();
yVal = new vector<double>();
xyVal = new vector<double>();
xxVal = new vector<double>();
value = new vector<double>();
c = new vector<double>();
for(it = xp->begin(); it != xp->end(); ++it){
xVal->push_back(it->y);
xxVal->push_back(it->x);
}
for(it = yp->begin(); it != yp->end(); ++it){
xyVal->push_back(it->x);
}
for (int i = 0; i < xVal->size(); i++){
c = xVal[i];
while (xyVal[c] < xxVal[i];){
c++;
if ((c-1)<=xxVal[i]<=c){
double value = xp[c-1] + (xp[c] - yp[c-1])*(xxVal[i] - xyVal[c-1])/(xyVal[c] - xyVal[c-1]);
}
yVal->push_back(value);
}
}
UserGraph->removeAllData();
UserGraph->addDataSet(xVal, yVal, [UIColor redColor], 0, false, true, 2);
UserGraph->updateAll();
}
Above is my pseudo code for what I'd like to have happen. I am still having issues understanding vectors. As you can see above with the yVal = "..." theres an issue with binary expressions with vector<CGPoint>
and vector<double>
.
what this algorithm is supposed to do is take a drawn line on two graphs x(t)
and y(t)
then grabs the x(t)
's y
coords and turned it into a new vector. After that in the second while, it takes the x(t)
's x
coords to compare to the y(t)
x
coords to grab y
coords. When x(t)
's x and y(t)
x
don't match it needs to do the yVal
= algorithm.
Can some one help me turn my pseudo code into working code? Cheers
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您的代码中存在一些谜团,但希望这样的内容可以帮助您入门。我删除了指向向量的指针的使用,并添加了一些注释来解释我的更改。
There are some mysteries in your code, but something like this hopefully gets you started. I removed the use of pointers-to-
vector
and put some comments in line to explain my changes.yVal = xp[c-1] + ....
yVal 是一个指向双精度向量的点(顺便说一句,你几乎肯定不会使用它)而不是一个值
yVal = xp[c-1] + ....
yVal is a point to a vector of doubles (which you almost certainly don't to be using btw) not a value