声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 13463|回复: 12

[编程技巧] Subscripted assignment dimension mismatch 出错请教

[复制链接]
发表于 2007-9-9 16:13 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
我在命令窗口输入

>> 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 编辑 ]

Tj.m

4.91 KB, 下载次数: 15

stressN.m

33.97 KB, 下载次数: 10

回复
分享到:

使用道具 举报

发表于 2007-9-9 17:27 | 显示全部楼层
原帖由 yanice 于 2007-9-9 16:13 发表
我在命令窗口输入

>> 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 ...


看这个:常见的程序出错问题整理
 楼主| 发表于 2007-9-9 17:32 | 显示全部楼层

回复 #2 eight 的帖子

能不能说的详细一点 比较着急用,因为还要用这个函数来积分,所以我觉得错误和上边我说的应该是一个,能不能帮忙解决一下,多谢了
发表于 2007-9-9 23:20 | 显示全部楼层
看了一下你的代码,发现问题不少. 例如数组元素相乘中间点号没有必要写; 数组的维数混乱;
以及你最关心的"Error in ==> Tj at 16", 其问题在于"等号右边为向量,左边为数组元素,不匹配".
你可以改用元胞数组试试.

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

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

评分

1

查看全部评分

 楼主| 发表于 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,:)
发表于 2007-9-11 15:25 | 显示全部楼层
这个问题我虽然通过循环可以解决,但原问题的公式什么(word未上传)的没有看到,我实在怀疑LZ代码是否说清楚了问题,所以也不便继续讨论了.
发表于 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
发表于 2010-10-13 17:18 | 显示全部楼层
我也有这样的情况呀
发表于 2010-10-13 17:18 | 显示全部楼层
a(M,N) = a(M,N)+((b(M).*b(N)+c(M).*c(N)));
发表于 2010-10-13 17:20 | 显示全部楼层
这个就是那个错误
发表于 2010-10-19 16:50 | 显示全部楼层
saintpmj 发表于 2010-10-13 17:18
a(M,N) = a(M,N)+((b(M).*b(N)+c(M).*c(N)));

请给出完整的代码,否则不能运行,无法查找错误所在
发表于 2010-10-19 17:02 | 显示全部楼层
yanice 发表于 2007-9-10 22:49
多谢你的解答
为了省事所以把所有的乘法、除法和乘方都加了点乘,这个地方应该不会出问题吧
我的想法只是 ...
  1. 为了省事所以把所有的乘法、除法和乘方都加了点乘,这个地方应该不会出问题吧
复制代码
到底用点乘还是矢量乘积这个不是省不省事的问题,具体要看你的问题应该是点乘还应该是矢量乘
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-16 12:41 , Processed in 0.085730 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表