0

我有一个 3 列和 N 行的矩阵。我正在尝试修改一个元素并查看该元素(通过不放置分号)。出于某种原因,它总是给我整行。

这是代码及其作用:

for i=1:N
   [fitG params resnorm residual]=lorentzfit3(X,Y,[]);
   PICSG(i,1)= params(2)
   PICSG(i,2)= params(5)
   PICSG(i,3)= params(8) 
end 

每个 N 都给出 X 和 Y。Params 在出口中有 10 个参数。这是我运行此代码时的命令窗口结果。

PICSG =
2.6288e+09

PICSG =
1.0e+09 *
2.6288    2.8425

PICSG =
1.0e+09 *
2.6288    2.8425    2.7368

为什么它显示所有 PICSG 而不是只显示我要求的?

4

2 回答 2

1

当您执行 PICSG(i,1) = params(2) 时,您不是在要求 Matlab 显示 PICSG(i,1),而是在进行分配并且不添加分号是在要求 MATLAB 显示结果的那个任务。

赋值后,如果不使用分号,MATLAB 会显示所有修改后的矩阵,而不仅仅是更改后的值。

如果要显示值,请使用:

for i=1:N
   [fitG params resnorm residual]=lorentzfit3(X,Y,[]);
   PICSG(i,1)= params(2); disp(PICSG(i,1));
   PICSG(i,2)= params(5); disp(PICSG(i,2));
   PICSG(i,3)= params(8); disp(PICSG(i,3));
end 
于 2013-03-14T16:11:55.407 回答
0

为 PICSG 预分配内存

PICSG = zeros(N, 3)
于 2013-03-14T13:54:31.510 回答