MATLAB中‘Unsupported use of the '=' operator’及End错误修复咨询
修复MATLAB代码中的两个错误
错误1修复:不支持的'='运算符使用
报错行If R >= Threshold存在两个问题:
- MATLAB条件判断关键字为小写
if,对大小写敏感,不能写成大写If - 上一行的最大值获取代码缺少闭合括号
),且MATLAB无maximize函数,需改用max来获取最大值及对应索引
错误2修复:End运算符使用错误
原代码嵌套for循环结构混乱,内层end提前闭合导致逻辑脱离循环,同时存在大量变量名拼写、未定义问题:
- 调整嵌套
for循环的end位置,将像素处理逻辑放入内层循环 - 修正拼写错误:
zero→zeros,Intlmg→InputImg,s→size,InpuImg→InputImg,IndxImg→IndexImg,show→imshow,IndexeImg→IndexImg - 补充未定义变量
len(根据逻辑设为掩码数量4)
修正后的完整代码
function [EdgeImg, IndexImg] = Function1(InputImg, Threshold) % Four masks for the entire image H = [-1 -1 -1; 2 2 2; -1 -1 -1]; V = H'; D45 = [2 -1 -1; -1 2 -1; -1 -1 2]; D135 = [-1 -1 2; -1 2 -1; 2 -1 -1]; % Compute edge strengths and orientations using the four masks R1 = imfilter(InputImg, H, 'symmetric'); R2 = imfilter(InputImg, V, 'symmetric'); R3 = imfilter(InputImg, D45, 'symmetric'); R4 = imfilter(InputImg, D135, 'symmetric'); % Initial EdgeImg and IndexImg len = 4; % 定义len为掩码数量 EdgeImg = zeros(size(InputImg)); IndexImg = len * ones(size(InputImg)); % Loop through all pixels [row, col] = size(InputImg); for k = 1:row for m = 1:col % Get max edge strength and its orientation index [R, jip] = max([R1(k,m), R2(k,m), R3(k,m), R4(k,m)]); if R >= Threshold EdgeImg(k,m) = R; IndexImg(k,m) = jip; end end end % Post-process and display results EdgeImg(IndexImg == len) = 0; figure; subplot(1,2,1); imshow(EdgeImg, []); subplot(1,2,2); imshow(IndexImg, []);
内容的提问来源于stack exchange,提问作者user58066
相关产品推荐
相关产品推荐

