求解MATLAB对矩阵循环赋值问题,一直报错?

具体程序如下
img=imread('D:\下载\指静脉\归一化图片','bmp');
img=rgb2gray;

%%% OTSU
[m,n]=size(img);
yuzh=0;
for yuzhi=1:255
xiaoyu=0;
dayu=0;
huidushu=zeros(1,255);
for huiduzhi=1:255
huidushu(1,huiduzhi)=sum(sum(img=huiduzhi));
end
for i=1:m
for j=1:n
if img[i,j]<yuzhi
xiaoyu=xiaoyu+1;
end
if img[i,j]>yuzhi
dayu=dayu+1;
end
end
end
for huiduzhi=1:yuzhi
ma=sum(huiduzhu*huidushu(huiduzhi)/xiaoyu);
end
for huiduzhi=yuzhi:255
mb=sum(huiduzhi*huidushu(huiduzhi)/dayu);
end
m=ma+mb;
pa=xiaoyu/m*n;
pb=1-pa;
s=pa*(ma-m)*(ma-m)+pb*(mb-m)*(mb-m);
end
if s>yuzh
g=yuzhi;
end

for i=1:m
for j=1:n
if img(i,j)<=g
h(i,j)=img(i,j)*double((img(i,j)/g).^l);
else
h(i,j)=1-(1-img(i,j))*double(((1-img(i,j))/(1-g)).^l);

end
end
end
figure,imshow(h);
主要是这句报错 huidushu(1,huiduzhi)=sum(sum(img=huiduzhi));
错误原因:等号左边的表达式不是赋值的有效目标。
不知道该怎么修改

MATLAB二维矩阵赋值和C语言相仿,除了以下几点差别:
下标从1开始而不是0;
索引使用(i,j)而不是[i][j];
可以一个语句对多个元素(包括整个矩阵)同时赋值。
你说的只能给第一行赋值肯定是谢的代码有错,以下是一个简单的例子:
A=zeros(5,4);for r=1:5, for c=1:4,A(r,c)=r*10+c;end, end
你可以对照一下,看问题出在哪里。

for循环可以有a=a+5这样的语句,但不能有a+=5,因+=不是MATLAB的操作符。但是要注意,MATLAB 的for循环是基于索引的,这意味着,假如你的循环是for a=...的表达式,你不可能像C语言里那样通过再循环体内部修改a的值去改变循环的次数。
温馨提示:内容为网友见解,仅供参考
无其他回答

matlab编程问题:用eval进行for循环将矩阵每一列赋予一个变量。运行出错...
c(:,num2str(i))这个地方有错误,eval接受字符串作为参数,下面是我的代码:clear all;close all;clcc=magic(33);for k=0:22 i=k+1 eval(['e',num2str(k),'=','c(:,i)'])end

MATLAB矩阵循环赋值,为啥不行呢?求正解
MATLAB二维矩阵赋值和C语言相仿,除了以下几点差别:下标从1开始而不是0;索引使用(i,j)而不是[i][j];可以一个语句对多个元素(包括整个矩阵)同时赋值。你说的只能给第一行赋值肯定是谢的代码有错,以下是一个简单的例子: A=zeros(5,4);for r=1:5, for c=1:4,A(r,c)=r*10+...

matlab中用for循环修改矩阵某元素值,为什么有错误?
应该是这样的,比如你要改第1行第5列的数为1,那么改为:a(5)=1;如果你想把a的前5个都改为1,那么运行 a(1:5)=1;

matlab 对矩阵各元素进行二元二次线性方程组的求解,用到for循环,但一 ...
原来的方程有问题,这个OK,不过还是要把变量名进行修改![aAr(i,j),bAr(i,j)]=solve('(aAr(i,j)-125)^2-(bAr(i,j)-172)^2=125^2+172^2','aAr(i,j)^2+bAr(i,j)^2-Sr(i,j)^2*(Hr(i,j)-41.6)^2\/(15^2)=0');...

MATLAB中出现报错:错误使用 horzcat串联的矩阵的维度不一致。各位大佬求...
在物理学中,矩阵于电路学、力学、光学和量子物理中都有应用;计算机科学中,三维动画制作也需要用到矩阵。矩阵的运算是数值分析领域的重要问题。将矩阵分解为简单矩阵的组合可以在理论和实际应用上简化矩阵的运算。对一些应用广泛而形式特殊的矩阵,例如稀疏矩阵和准对角矩阵,有特定的快速运算算法。

matlab迭代循环的问题,这个程序怎么都有错,求好心人士指点错在哪_百度...
1、程序中while和for循环的结构不完整,有些for和最外层的while都没有在结束的时候加上end命令 2、变量的递加和变量名的递加是两码事。你的程序中看得出来你想每得到一个lamda和beta值之后迭代进入下一循环的计算。但是你在想通过变量名中加入_m和_i表示递加是非常错误的。在matlab中合理的做法是用...

matlab 循环取出矩阵的某一行并标示上A1 A2 A3 但总是报错。。。求指 ...
因为它比较出错。我给出的代码如下:d=[1,1,1;2,2,2;3,3,3];for i=1:3 var=d(i,:);disp(strcat('A',num2str(i),'=',num2str(var)))end 运行结果是:A1=1 1 1 A2=2 2 2 A3=3 3 3 注:上面用到的strcat函数其功能是字符串连接,disp当然是显示啦!望采纳!

matlab程序总是报错下标的赋值维度不匹配
某个k,j下 Com(k,j,:) 这399个数值中,有两个以上相等的最大值,那么find就会返回多个值而index(k,j)是一个标量,只有一个值,所以会报错说维度不匹配。修改:find(Com(k,j,:)==max(Com(k,j,:)));可以用find(Com(k,j,:)==max(Com(k,j,:)),1);只返回找到的第一个最大值的...

matlab中一维矩阵数据for循环改变里面数值?
题主在运行下列这句代码 datal(i)=strcat(datath,':',datatm,':',datats);时,matlab软件出错。由于变量datal(i)要求数据类型为数值型,而strcat函数要求数据类型为字符型,两者不能对应,所以出现错误。解决的办法是将strcat函数转换出来的字符,以元胞数组的形式来储存...

matlab数组循环赋值
首先,创建一个 3x3 零矩阵A。接着,采用嵌套循环遍历矩阵元素,执行计算或赋值操作。此处,每个元素值被设置为行号乘以列号。最终,使用 disp 函数展示更新后的矩阵 A。循环赋值灵活多变,根据具体需求修改循环体内代码,实现不同元素的赋值操作。此示例说明如何遍历与赋值数组元素。下面提供 MATLAB 数组...

相似回答