Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab hilbert矩阵条件数的计算_Matlab_Matrix - Fatal编程技术网

Matlab hilbert矩阵条件数的计算

Matlab hilbert矩阵条件数的计算,matlab,matrix,Matlab,Matrix,好吧,首先我觉得问这个问题很傻,因为答案似乎应该很简单,但我想不出来 我有一个向量n: n=[2:13] 我想通过elementwise传递这个向量,以便它返回另一个带有计算值的向量: condition=cond(hilb(n)) hilb(n)返回维数n的Hilbert矩阵。cond()然后计算条件数,这是一个标量值。目前,Matlab使用n中的第一个值返回条件作为单个值,该值为2,而不是长度等于n的向量 我知道使用*,sin.(和其他命令来计算元素,但我找不到如何使用这样的函数来实现这

好吧,首先我觉得问这个问题很傻,因为答案似乎应该很简单,但我想不出来

我有一个向量n:

n=[2:13]
我想通过elementwise传递这个向量,以便它返回另一个带有计算值的向量:

condition=cond(hilb(n))
hilb(n)返回维数
n的Hilbert矩阵。cond()
然后计算条件数,这是一个标量值。目前,Matlab使用n中的第一个值返回条件作为单个值,该值为2,而不是长度等于n的向量


我知道使用
*
sin.(
和其他命令来计算元素,但我找不到如何使用这样的函数来实现这一点

不幸的是,你不能像那样将向量传递给
hilb
。您应该使用循环,或者更简单的方法:

请注意,
arrayfun
只是一个伪装的循环,因此与显式编写循环相比,它没有提供任何性能优势

condition = zeros(1,numel(n));
for ii = 1:numel(n)
   condition(ii) = cond(hilb(n(ii)));
end

请记住,
hilb
是一个病态矩阵,因此您的值将非常高(
cond(hilb(13))=8.3042e+19
。这意味着您得到的向量将如下所示:
1.0e+19*0.0000 0.0000…0.0017 8.3042
。如果您使用,那么您将看到每个元素的值:
1.9281e+01 5.2406e+02…8.3042e+19
很遗憾,您不能像这样将向量传递给
hilb
。您应该做什么ld do是使用循环,或更简单的方法:

请注意,
arrayfun
只是一个伪装的循环,因此与显式编写循环相比,它没有提供任何性能优势

condition = zeros(1,numel(n));
for ii = 1:numel(n)
   condition(ii) = cond(hilb(n(ii)));
end
请记住,
hilb
是一个病态矩阵,因此您的值将非常高(
cond(hilb(13))=8.3042e+19
。这意味着您得到的向量将如下所示:
1.0e+19*0.0000 0.0000…0.0017 8.3042
。如果使用,则可以看到每个元素的值:
1.9281e+01 5.2406e+02…8.3042e+19