我是C#的新手,并且列表中的for循环存在问题。 我有一个列表,其中包含从0到7的数字(称为alpha)。
alpha0=1
alpha1=2
alpha2=3
...
alpha7=8
现在,我想以这种方式创建一个包含所有这些alpha的矩阵,然后我想对其进行转置:
我试图直接编写转置的代码,但是它给了我错误或者更好的是我错了语法(请参阅代码的最后一个字符串)。有人可以帮我吗?
我将起始列表称为alpha列表。
List<List<double>> arr = new List<List<double>>();
for (int col = 0; col < 8; col++)
for (int row = 0; row < 7; row++)
arr[col, row].Add(startinglist[col]);
答案 0 :(得分:1)
尝试以下代码:
var size = 8;
var alpha = Enumerable.Range(1, size).ToArray();
var matrix = new int[size, size + 1];
for (int i = 0; i < size; i++)
{
// Assign values on the diagonal.
matrix[i, i] = alpha[i];
matrix[i, i + 1] = 1 - alpha[i];
}
答案 1 :(得分:0)
尝试一下:
var size = 8;
int[] alpha = Enumerable.Range(1, size).ToArray();
int[][] C = new int[size - 1][];
for(int i = 0 ; i < size - 1; i++)
{
C[i] = new int[size];
C[i][i] = alpha[i];
C[i][i + 1] = 1 - alpha[i + 1];
}
编辑:
由于您已经将Alpha定义为列表,因此可以使用以下方法:
Edit2: 将int更改为double:
double[][] C = new double[alpha.Count - 1][];
for(int i = 0 ; i < alpha.Count - 1; i++)
{
C[i] = new double[alpha.Count];
C[i][i] = alpha[i];
C[i][i + 1] = 1 - alpha[i + 1];
}