找回密码
 注册
关于网站域名变更的通知
查看: 434|回复: 3
打印 上一主题 下一主题

关于Matrix dimensions must agree错误的问题

[复制链接]
  • TA的每日心情
    难过
    2019-11-20 15:02
  • 签到天数: 1 天

    [LV.1]初来乍到

    跳转到指定楼层
    1#
    发表于 2020-5-27 15:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

    EDA365欢迎您登录!

    您需要 登录 才可以下载或查看,没有帐号?注册

    x
    Matrix dimensions must agree错误的中文解释是:矩阵的维数必须一致 出错原因:这是由于运算符(= + - / * 等)两边的运算对象维数不匹配造成的,典型的出错原因是错用了矩阵运算符。matlab 通过“.”来区分矩阵运算和元素运算。
    & R3 i. V5 @+ \# p0 V( v. S2 `. B) V$ Z% j, U' ]1 ]
    我看了一些论坛讨论的这个错误,一般都是“乘”和“点乘”弄错了,可是我下面的程序是涉及加法的,而且维数是直接把要相加的第一个矩阵的维数赋值给第二个矩阵,不知道为什么还会出错,请高手指点!" \" c, I) ~8 X6 D8 k
    4 d9 c# P5 b# z8 Y  n7 f
    shiyan.m的程序体为:
    $ F. ?6 h8 `% w+ J) u  C+ u7 L( T: d1 j0 j4 Y
    [I,M]=imread('123.tif');
    & t5 X; P. R# w2 C- T[m,n]=size(imread('123.tif'));$ `( T) O% T; S- M* e
    J=imnoise(I,'gaussian',0,0.02);! [0 ]' L$ t5 U8 T3 R
    subplot(1,3,1),imshow(I,M),title('original image');$ d& {* Z- A! @5 u: Y$ A
    subplot(1,3,2),imshow(J,M),title('managed image');
    , k" L" E+ G1 a7 {; KK=ones(m,n);4 \& p# \" S% Q, [5 m3 J0 _( K* L3 G
    for i=1:1:100
    2 T" j8 N& ]9 ~* I0 d    J=imnoise(I,'gaussian',0,0.02);% U: y* b+ p( R* I' ~& p% H( X
        J1=im2double(J);% T7 G: g; ]: _6 z3 J5 Z
        K=K+J1;      %第10行
    " d+ y, s+ ~* A0 C) e, a/ Wend
    3 q9 @6 ?! [& F9 s& e4 p/ YK=K/100;       %求图像的平均( x- f. @! V/ V0 C
    subplot(1,3,3),imshow(K),title('result image');, i" [9 k: T$ M5 S9 R' E" _$ ^2 s$ Y
    + M" L" D  V  W3 Q2 I6 N
    8 N* G6 ?( d+ A; w9 [
    运行的时候出现这个错误:6 j& n2 S* t" b+ [
    0 r5 ?3 ?# o8 E; e/ V
    ??? Error using ==> plus
    ) v  F8 Z5 a! u1 F4 mMatrix dimensions must agree.
    4 j: u; _! ?$ ^6 D: d( Q& ~Error in ==> shiyan at 10& V7 c/ i- r. Y. k/ K
        K=K+J1;9 |& j, Q1 A1 Y
    1 u6 R/ |5 l* o

    该用户从未签到

    2#
    发表于 2020-5-27 16:26 | 只看该作者

    - G# s+ q# w; W5 j# ^6 w; p- L1 Esize(K)
    ' Q# y8 u7 e# x2 i* ?: X7 u  H: H9 g( j0 j  s" {
    size(J1)5 r* Z- P- P3 Y( T

    0 v) \6 G5 g8 W  H; D看看显示什么

    点评

    多谢,明白了。原来它们两个的维数真的是不同的。 将程序改为如下形式就对了: %导入图像的同时将图像分为行和列元素 =imread('123.tif'); %对图像进行加噪声 J=imnoise(I,'gaussian',0,0.02); %显示图像 s  详情 回复 发表于 2020-5-27 16:27
  • TA的每日心情
    难过
    2019-11-20 15:02
  • 签到天数: 1 天

    [LV.1]初来乍到

    3#
     楼主| 发表于 2020-5-27 16:27 | 只看该作者
    NingW 发表于 2020-5-27 16:26" L4 f8 q# K" f
    size(K)5 c. E5 D3 @9 w
    ; S3 K0 F& G2 F7 o9 T4 y, h
    size(J1)

    4 L+ ~6 r6 {" T" R. j4 j6 t多谢,明白了。原来它们两个的维数真的是不同的。$ F, j: z6 U5 \/ _+ \* ]% ?7 v; u9 c4 |
    3 o  \. |0 w5 t* m
    将程序改为如下形式就对了:
    + v0 B1 E/ D6 u4 T2 T; Y%导入图像的同时将图像分为行和列元素9 j+ Z$ C7 \/ z7 w8 l7 [$ Q
    [I,M]=imread('123.tif');" {  i9 ~" m9 i% x" B( a
    %对图像进行加噪声6 u9 x1 t8 X; k( z3 e/ i
    J=imnoise(I,'gaussian',0,0.02);+ u7 }5 A- C; D" V
    %显示图像
    2 K# q0 V6 {8 j9 K# Jsubplot(1,3,1),imshow(I,M),title('original image');
    . N9 g' o( X1 D6 Lsubplot(1,3,2),imshow(J,M),title('managed image');
    # j- W: d( ^' K  v%创建与原图像一样维数的全0矩阵: K) W% S  D" c0 b( \5 ?2 u
    J1=im2double(J);
    ! L) k: ]! {  V) x3 D! A1 t6 L7 D5 nK=ones(size(J1));
    - v* o4 `3 c' m: \%循环100对图像加噪声然后累加: r; Z7 t+ ~: V* ?: T
    for i=1:1:100: d, G8 c0 w- }! j8 P
        J=imnoise(I,'gaussian',0,0.02);+ ]/ H) K) a( ~" t  f
        J1=im2double(J);
    ! e+ l2 I, S) \3 N    K=K+J1;
    * L4 ^4 n1 g' c1 c7 Bend, ]% v* Q4 N6 G: H/ ]0 f
    %求图像的平均
      h4 p! S* E" N% K  e1 ~/ bK=K/100; ; _, G3 S( `5 I6 F5 D/ D
    %显示处理过的图像
    ' ~8 J- C$ Q) Y4 M# s% p/ Ssubplot(1,3,3),imshow(K),title('result image');1 I4 ^$ }& F" t1 }/ G

    6 q2 D* ?2 G0 @( `再次感谢
    % y: x8 n' y3 i* [

    该用户从未签到

    4#
    发表于 2020-5-27 17:12 | 只看该作者
    来看看,学习学习
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-7-23 07:39 , Processed in 0.125000 second(s), 27 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

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