如何获得指定尺寸的矩阵:Matlab初始化7行NOJ矩阵却得到14行问题
问题原因
- Matlab矩阵的下标从1开始计数,当你对超出当前矩阵维度的下标位置直接赋值时,Matlab会自动将矩阵扩展到对应大小,不会触发报错。
- 你循环中x的取值为2、4、6、8、10、12、14,最大下标达到14,初始定义的7行
zeros(7,65)会被自动扩展为14行,矩阵中第1、3、5等奇数行都是默认填充的0值,最终就得到了14×65的矩阵。
解决方法
方法1:用循环计数作为行下标(推荐)
单独定义x的取值列表,用循环的计数变量对应矩阵的行位置,修改后代码如下:
NOJ = zeros(7,65); x_list = 2:2:14; for idx = 1:length(x_list) x = x_list(idx); NOJ(idx,:) = (1- sqrt(1-inflow_CT))./(1+(2*kNOJfit*x/2)).^2; end
最终得到的7行矩阵,第1行对应x=2的计算结果,第2行对应x=4的计算结果,以此类推。
方法2:运行原代码后提取目标行
如果你需要保留x取值和行号的对应逻辑,运行完你原有代码后,单独提取偶数行即可得到7×65的矩阵:
NOJ = NOJ(2:2:14,:);
内容的提问来源于stack exchange,提问作者dilek-o
相关产品推荐
相关产品推荐

