【问题标题】:Create a concatenated matrix in matlab在matlab中创建一个级联矩阵
【发布时间】:2021-05-15 14:05:33
【问题描述】:

我需要你的帮助。 我想制作一个 15x2501 尺寸的矩阵。 我正在使用此代码。

%values of Kh 
Kh = [1*10.^-7 1*10.^-6.5 1*10.^-6 1*10.^-5.5 1*10.^-5 1*10.^-4.5 1*10.^-4 1*10.^-3.5 1*10.^-3 1*10.^-2.5 1*10.^-2 1*10.^-1.5 1*10.^-1 1*10.^-0.5 1*10.^0];
%
% Matrix by each value of Kh
HMC_Kh = zeros(length(Kh),2501);
   for i = 1:length(Kh)
       [H,ZH,h,Zh] = func_Kh(Kh(i));
       HMC_Kh = [HMC_Kh; H];
   end

当我运行代码时,matlab 会显示这条消息:

Error using vertcat
Dimensions of matrices being concatenated are not consistent.

Error in val_Kh_feb (line 13)
    HMC_Kh = [HMC_Kh; H];

函数func_Kh根据取Kh的值返回一个最大1x2501维的变量H,或者函数func_Kh可以返回一个1x500维的变量H最低限度。也就是说,H随着Kh取的每一个值而变化,所以当H为1x500维时,矩阵可以在每行H的最后一个值之后用零填充,使得每行的维数都是1x2501。

希望你能帮我解决这个错误,肯定很傻,我正在学习matlab。

谢谢!

【问题讨论】:

  • 对我来说,填充数组可能比连接到数组更合适,因为您已经使用:HMC_Kh = zeros(length(Kh),2501); 预先分配了它。

标签: function matlab matrix concatenation


【解决方案1】:

交叉发布在 MATLAB Answers 上,但在此处重复答案。改变这个

HMC_Kh = [HMC_Kh; H];

到这里

HMC_Kh(i,1:numel(H)) = H;

您当前的代码存在两个问题。每次迭代时 H 中的元素数量不同,这会导致您已经发现的连接错误。但是您在每次迭代时都将 H 附加到 HMC_Kh 中,因此您的预分配没有意义,除非您真的希望结果以一大块 0 开头。

【讨论】:

  • 嗨@James Tursa 感谢您的帮助,问题已解决
猜你喜欢
  • 2015-08-05
  • 1970-01-01
  • 2016-03-08
  • 2018-07-12
  • 2015-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多