yanice 发表于 2007-9-9 16:13

Subscripted assignment dimension mismatch 出错请教

我在命令窗口输入

>> w=1:10
w =
   1   2   3   4   5   6   7   8   9    10
>> stressN(w,1e-3,1000,0.3,1e10,0,500,0.3,1e8,1e-3,1)
出现
??? Subscripted assignment dimension mismatch.
Error in ==> Tj at 16
    Tj(1,1)=Tj1_part0.*exp(A.*y).*(Tj1_part1.*sin(B.*y)+Tj1_part2.*cos(B.*y));
Error in ==> stressN at 4
T1=Tj(w,alf1,v1,E01,y1,N,1);
请问如何修改程序,请大虾帮忙

[ 本帖最后由 eight 于 2007-9-9 17:26 编辑 ]

eight 发表于 2007-9-9 17:27

原帖由 yanice 于 2007-9-9 16:13 发表 http://www.chinavib.com/forum/images/common/back.gif
我在命令窗口输入

>> w=1:10
w =
   1   2   3   4   5   6   7   8   9    10
>> stressN(w,1e-3,1000,0.3,1e10,0,500,0.3,1e8,1e-3,1)
出现
??? Subscripted assignment dimension ...

看这个:常见的程序出错问题整理

yanice 发表于 2007-9-9 17:32

回复 #2 eight 的帖子

能不能说的详细一点 比较着急用,因为还要用这个函数来积分,所以我觉得错误和上边我说的应该是一个,能不能帮忙解决一下,多谢了

xjzuo 发表于 2007-9-9 23:20

看了一下你的代码,发现问题不少. 例如数组元素相乘中间点号没有必要写; 数组的维数混乱;
以及你最关心的"Error in ==> Tj at 16", 其问题在于"等号右边为向量,左边为数组元素,不匹配".
你可以改用元胞数组试试.

------如还有问题, 请将你的问题用word上传一下.

[ 本帖最后由 xjzuo 于 2007-9-11 09:03 编辑 ]

yanice 发表于 2007-9-10 22:49

回复 #4 xjzuo 的帖子

多谢你的解答
为了省事所以把所有的乘法、除法和乘方都加了点乘,这个地方应该不会出问题吧
我的想法只是想在在Tj的第一页存储对应w第一个数值的数据,依此类推。现在我已经可以把Tj存进去了 但是发现不能把一个三维数组付给另外一个三维数组
例如T是一个6x6x6的数组
我想把T的一部分付给A
即使把T的3-4行 1-4列 和所有页上的数据 付给 A的1-2行 1-4列 和所有的页上 ,每一页都是对应的就可以了

花如月 发表于 2007-9-11 13:46

回复 #5 yanice 的帖子

A(1:2,1:4,:)=T(3:4,1:4,:)

xjzuo 发表于 2007-9-11 15:25

这个问题我虽然通过循环可以解决,但原问题的公式什么(word未上传)的没有看到,我实在怀疑LZ代码是否说清楚了问题,所以也不便继续讨论了.

saintpmj 发表于 2010-10-13 17:18

%计算每个三角单元
L = cell(600,1);
%b = zeros(600,1);
%c = zeros(600,1);
a = double(zeros(331,331));
for i = 1:1:600
    m = B(i,1);
    n = B(i,2);
    l = B(i,3);
    b(m) = (A(B(i,2),2)-A(B(i,3),2))*3/pi;
    b(n) = (A(B(i,3),2)-A(B(i,1),2))*3/pi;
    b(l) = (A(B(i,1),2)-A(B(i,2),2))*3/pi;
    c(m) = (A(B(i,1),1)-A(B(i,3),1))*3/pi;
    c(n) = (A(B(i,1),1)-A(B(i,3),1))*3/pi;
    c(l) = (A(B(i,2),1)-A(B(i,1),1))*3/pi;
    L(m,1) = {(A(B(i,2),1)*A(B(i,3),2)-A(B(i,3),1)*A(B(i,2),2)+(A(B(i,2),2)-A(B(i,3),2))*x+(A(B(i,1),1)-A(B(i,3),1))*y)*3/pi};
    L(n,1) = {(A(B(i,3),1)*A(B(i,2),2)-A(B(i,1),1)*A(B(i,3),2)+(A(B(i,3),2))-A(B(i,1),2)*x+(A(B(i,1),1)-A(B(i,3),1))*y)*3/pi};
    L(l,1) = {(A(B(i,1),1)*A(B(i,2),2)-A(B(i,2),1)*A(B(i,1),2)+(A(B(i,1),2))-A(B(i,2),2)*x+(A(B(i,2),1)-A(B(i,1),1))*y)*3/pi};
   %三角形计算9次
    for j = 1:1:3
      M = B(i,j);
      for k = 1:1:3
            N = B(i,k);
            %二重积分计算
            syms x y;
            I = int(L{M,1}.*L{N,1},y,0,1-x);
            P = int(I,x,0,1);
            P = eval(P);%类型转换
            %计算刚度矩阵
         a(M,N) = a(M,N)+((b(M).*b(N)+c(M).*c(N)));
      end
    end
end

saintpmj 发表于 2010-10-13 17:18

我也有这样的情况呀

saintpmj 发表于 2010-10-13 17:18

a(M,N) = a(M,N)+((b(M).*b(N)+c(M).*c(N)));

saintpmj 发表于 2010-10-13 17:20

这个就是那个错误

happy 发表于 2010-10-19 16:50

saintpmj 发表于 2010-10-13 17:18 static/image/common/back.gif
a(M,N) = a(M,N)+((b(M).*b(N)+c(M).*c(N)));

请给出完整的代码,否则不能运行,无法查找错误所在

happy 发表于 2010-10-19 17:02

yanice 发表于 2007-9-10 22:49 static/image/common/back.gif
多谢你的解答
为了省事所以把所有的乘法、除法和乘方都加了点乘,这个地方应该不会出问题吧
我的想法只是 ...

为了省事所以把所有的乘法、除法和乘方都加了点乘,这个地方应该不会出问题吧到底用点乘还是矢量乘积这个不是省不省事的问题,具体要看你的问题应该是点乘还应该是矢量乘
页: [1]
查看完整版本: Subscripted assignment dimension mismatch 出错请教