for i = 1:1:30 c_che = [c_che;c_i]; m_mpa = [m_mpa;m_i]; end在matlab中无法将循环中的i赋值到c_izhong的i,这该如何解决
时间: 2024-09-15 16:02:42 浏览: 14
在这个`for`循环中,你试图在每次迭代时将变量`i`的当前值添加到`c_che`和`m_mpa`数组的末尾,但是你不能直接将`i`赋值给数组元素。在MATLAB中,当你想要存储每次循环迭代的结果(如数值`c_i`或`m_i`),你需要使用数组操作或者创建一个新的数组并将结果添加进去。
这里有几个解决方案:
1. 如果`c_i`和`m_i`是同长度的向量,你可以简单地用逗号分隔的方式逐个添加它们:
```matlab
for i = 1:1:30
c_che(end+1) = c_i;
m_mpa(end+1) = m_i;
end
```
或者更简洁一点:
```matlab
[c_che, m_mpa] = deal(zeros(1, 30)); % 创建初始为空的数组
for i = 1:30
c_che(i) = c_i;
m_mpa(i) = m_i;
end
```
2. 如果`c_i`和`m_i`不是向量,而是其他类型的元素,比如矩阵,你需要遍历它们并逐行或逐列添加:
```matlab
for i = 1:30
c_che(end+1,:) = c_i;
m_mpa(end+1,:) = m_i;
end
```
这里假设`c_i`和`m_i`都是同维度的。
如果你的目的是想把每个`i`的值记录下来,你可以创建一个额外的数组专门用于保存`i`:
```matlab
i_values = [];
for i = 1:1:30
i_values = [i_values; i]; % 添加到i_values数组
c_che = [c_che; zeros(1, size(c_i, 2))]; % 或者根据c_i的实际大小填充
m_mpa = [m_mpa; zeros(1, size(m_i, 2))];
c_che(end) = c_i;
m_mpa(end) = m_i;
end
```
现在`i_values`包含了所有的`i`值。
如果你对数组操作还有疑问,请告诉我`c_i`和`m_i`的具体类型和结构,我可以提供更准确的帮助。