如何将以前的值存储到数组中
How to store previous value into the array
大家好,我正在从模拟引脚读取传入值。我需要将以前的值存储到数组中。
我正在使用的代码:
int u = A0;
int y = A1;
float z[4][1] = {{0},
{0},
{0},
{0}};
void setup() {
Serial.begin(9600);
pinMode(u, INPUT);
pinMode(y, INPUT);
}
void loop() {
u = analogRead(A0);
y = analogRead(A1);
}
我该怎么做?
z[4][1] = {{u(n-1)},
{u(n-2)},
{y(n-1)},
{y(n-1)}};
您可以使用此代码。我在模拟中尝试了这个,效果很好。您可以在串行监视器上查看数据更改。storeValues(( 函数做你想要的。您需要首先在循环函数中调用它。
int firsPin = A0;
int secondPin = A1;
int u = 0, y = 0, lastU = 0, lastY = 0;
//0 : u(n-1) 1 : u(n-2) 2 : y(n-1) 3 : y(n-2)
int z[] = {0, 0, 0, 0};
void setup() {
Serial.begin(9600);
pinMode(firsPin, INPUT);
pinMode(secondPin, INPUT);
}
void loop() {
storeValues();
u = analogRead(firsPin);
y = analogRead(secondPin);
Serial.println("u: " + String(u));
Serial.println("y: " + String(y));
Serial.println("u(n-1): " + String(z[0]));
Serial.println("y(n-1): " + String(z[2]));
Serial.println("u(n-2): " + String(z[1]));
Serial.println("y(n-2): " + String(z[3]));
delay(100);
}
void storeValues() {
z[1] = z[0];
z[3] = z[2];
z[0] = u;
z[2] = y;
}
>您需要复制这些值。正如评论中提到的,为什么第二个维度是 1?我省略了那个。
我通常的做法是:
z[1] = z[0];
z[0] = u;
z[3] = z[2];
z[2] = y;
这会将以前的值转换为矩阵的另一个值,以将其放入代码中:
int pinU = A0;
int pinY = A1;
int u = 0;
int y = 0;
float z[4] = {0,0,0,0}
void setup() {
Serial.begin(9600);
pinMode(pinU, INPUT);
pinMode(pinY, INPUT);
}
void loop() {
u = analogRead(A0);
y = analogRead(A1);
z[1] = z[0];
z[0] = u;
z[3] = z[2];
z[2] = y;
}
这将有效地使z = {u(n(, u(n-1(, y(n(, y(n-1(}
相关文章:
- 使用无符号字符数组有效存储内存
- 如何在cpp.中使用协议缓冲区存储大缓冲区/数组(char/int)
- 在c++中获取两个大int,并将它们存储在数组中
- 使用 Xcode 将双精度存储在数组C++中
- 访问表示 2D 矩阵的 1D 存储数组
- 从输入文件读取整数,仅存储数组C 中的唯一整数
- 如何在队列中存储数组
- 按列主要顺序迭代行大量存储数组
- 如何使存储数组的二进制搜索稳定
- 将行中的字段从textfile中更改为存储数组,而不是重新编写文件
- 存储数组索引值C++
- 存储数组的地方,如果我在返回后声明它
- 缺少存储数组地址的内存
- 使用static在函数中存储数组各个组件的值
- 如何存储数组的每个相邻子数组的和
- 在c++中存储数组映射
- 存储数组的地址列表,以解析原始的非终止文本
- 用于存储数组的字符串
- c++存储数组下一个位置的地址
- 在 for 循环中创建和存储数组