在matlab中输入字符串数组

时间:2014-03-20 06:50:34

标签: arrays string matlab input numerical

问题:求解线性方程

我有一个3×3矩阵,我想把3个表达式作为包含像

这样的矩阵单元格的输入
2*b(1,1)+3*b(1,2)+3*b(1,3)
3*b(2,1)+4*b(2,3)+3*b(2,3)

并使用矩阵

中的不同单元格值对它们进行评估
 0     1     0
 1     0     0
 1     0     0

 0     1     0
 0     1     0
 1     0     0  etc.,

我使用了以下代码,得到了结果,但我只能使用单元格值。当我尝试用数字表达表达式时,它显示以下错误:

  

*警告:文件:pro.m行:5列:9此行上的表达式在执行时将生成错误。错误将是:使用时出错   ==> vertcat CAT参数维度不一致。

     

???使用==>时出错pro at 5错误使用==> vertcat CAT参数维度不一致。*

这是我的代码:

clc;
clear all;
close all;

cell = ['b(1,1)+b(1,2)';'b(2,1)+b(2 ,3)';'b(3,3)+b(3,2)'];
exp = cellstr(cell);
res = [0,0,0];
display(res);

display(exp);

a = zeros(3,3);

for i = 1:1:3
    a(1,i) = 1;
    if(i>1)
    a(1,i-1) = 0;
    end
    for j = 1:1:3
        a(2,j) = 1;
        if(j>1)
        a(2,j-1) = 0;
        end    
        for k = 1:1:3
            a(3,k) = 1;
            if(k>1)
            a(3,k-1) = 0;
            end
            b = a;
            res(k) = eval(exp{k});
            if res(1) == 1 
                if res(2) == 1
                    if res(3) == 1 
                        display(res);
                        display(b);
                        break;
                    end
                end
            end
        end
        a(3,k)=0;
    end
    a(2,j) = 0;
end    
;

帮助我如何输入带数字和矩阵单元格的字符串......

1 个答案:

答案 0 :(得分:0)

这不是在Matlab中初始化cell的有效表达式:

cell = ['b(1,1)+b(1,2)';'b(2,1)+b(2 ,3)';'b(3,3)+b(3,2)'];

您必须使用大括号 {}

cell = {'b(1,1)+b(1,2)';'b(2,1)+b(2 ,3)';'b(3,3)+b(3,2)'};

BTW,如果你想解决 AX + b = 0 形式的线性方程式,你可以简单地尝试 X = -inv(A) * b

% Define system
A = [2 3 1; 7 -1 1; 4 0 5];
b = [1 0 1].';
% Solve system
X = -inv(A)*b;