matlab - 矩阵维度不匹配

标签 matlab matrix

我无法将 BB 的值保存在 Bv 中。

MATLAB 返回此错误:

Subscripted assignment dimension mismatch.

请帮我做一下。

X=[1 6 9 5; 6 36 54 30; 9 54 81 40; 5 30 40 25]

        [N1,dim1]=size(X)  ;
        for i=1:N1
            bb=X(i:end,1)*X(i,i:end);
            BB=bb(triu(true(size(bb))))
            Bv(i,:)=BB(:);

        end

最佳答案

正如 @Rashid 建议的那样,使用元胞数组而不是数值数组。元胞数组的优点在于它可以在 1 个存储单元中存储不同类型和大小的矩阵。它很像一个结构,但有索引可以轻松调用条目。

X=[1 6 9 5; 6 36 54 30; 9 54 81 40; 5 30 40 25];

    for ii=1:size(x,1)
        bb=X(ii:end,1)*X(ii,ii:end);
        BB=bb(triu(true(size(bb))))
        Bv{ii,:}=BB(:);
    end

请注意,我还更改了您的循环索引以使用 ii 而不是 i,请参阅 herei 是虚数单位,为了防止错误,最好不要覆盖内置函数。

元胞数组如何存储不同数据类型和大小的示例:

A = magic(2); % 2x2 double
B = uint8(magic(3)); % 3x3 uint8
C = 'hello world'; % string

YourCell{1} = A;
YourCell{2} = B;
YourCell{3} = C;

YourCell = 

    [2x2 double]    [3x3 uint8]    'hello world'

相同,但现在作为结构:

YourStruct.magic2double = A;
YourStruct.magic3uint8 = B;
YourStruct.MyString = C;

YourStruct = 

    magic2double: [2x2 double]
    magic3uint8:  [3x3 uint8]
    MyString:     'hello world'

单元格和结构体包含相同的信息,但对于单元格中的信息,您可以调用 YourCell{ii},而在结构体中,您必须调用 YourStruct.variablename。单元格可以通过索引访问,而结构则不能。然而,对于结构,您可以使用简单的名称来记住每个元素中存储的内容,但这对于单元格来说是不可能的。

关于matlab - 矩阵维度不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27206297/

相关文章:

matlab - 在 MATLAB 2014 中使用 'imhist' 时出错

matlab - 如何在Matlab中找到最小10%的数据?

matlab - 如何在 MATLAB 中调用短路逻辑运算符作为函数?

matrix - 沿一个坐标轴的3D偏斜变换矩阵

matrix - 用函数初始化矩阵

c++ - 如何用计算机代码检查无限集是否在加法下是封闭的?

matlab - 在不硬编码输入和输出数量的情况下创建 MIMO(多输入多输出)传递函数系统

c - 寄存器的结构体还是矩阵?

c++ - 错误-ld返回1退出状态 undefined reference

c++ - 初始化字符矩阵时出现 EAccess 冲突