0

'早上好,我已经阅读了我能找到的所有内容,但出于某种原因,我仍在为语法而苦苦挣扎。我正在从我的 GUI 中调用一个函数,该函数绘制成 4 个子图。我的问题是将文本添加到子图中,我没有收到任何错误,但没有显示文本... GUI 主屏幕的功能:

function Main(varargin)
ColorMap = cool(100);
BackgroundColor = ColorMap(50,:);
figure('Units','Normalized',...
    'Position',[.06 .12 .88 .75],...
    'Color',BackgroundColor,'NumberTitle','Off',...
    'Menubar','None','Name','Rod Inputs')
m1 = uimenu('label','File');
m2 = uimenu('label','Bending & Shear');
uimenu(m1,'Label','CHS Inputs','Callback',@CHS);
uimenu(m2,'Label','Bending','Callback',@CantileverUDL);
uimenu(m1,'Label','Exit','Callback',@Quit);

计算器的功能:

function [M,V,dydx,y] = CantileverUDL(varargin)
%% Cantilever with UDL
% Suggested values:
% w = 300;
% EI = 60e6;
% L = 4;
input = inputdlg({'Length(m) = ',...
    'w(N/m2) = ',...
    'Flexural Stiffness(EI) = '});
n = str2double(input{1});
w = str2double(input{2});
EI = str2double(input{3});
L = (0:1/n:n)';
dydx = w.*L.^3/(6*EI);
y = -w.*L.^4/(8*EI);
M = w.*L.^2/2;
V = w.*L;
[maxdydx, idydx] = max(dydx);
[maxy, iy] = max(-y);
[maxM, iM] = max(M);
[maxV, iV] = max(-V);
figure(1)
clf
hold on
grid on
sp1 = subplot(4,1,1)
plot(L,dydx,'r')
title('Slope')
t1 = text(idydx,maxdydx,['max slope = ', maxdydx],'Parent',sp1,'Units','Normalized');
set(t1,'HorizontalAlignment','center');
sp2 = subplot(4,1,2)
plot(L,y,'b')
title('Deflection')
sp3 = subplot(4,1,3)
plot(L,M,'k')
title('Bending moment')
sp4 = subplot(4,1,4)
area(L,V)
title('Shear force')
end

谁能告诉我我在这里做错了什么?这对我来说是一个非常令人沮丧的问题,我似乎无法解决......

提前致谢!

4

1 回答 1

1

你可能想要

t1 = text(L(idydx),maxdydx,['max slope = ', maxdydx],'Parent',sp1);

代替

t1 = text(idydx,maxdydx,['max slope = ', maxdydx],'Parent',sp1,'Units','Normalized');

您的代码中有两个问题:

  1. 您正在使用索引而不是 x 值来定位您的文本
  2. 您正在使用标准化单位,但您没有标准化 x 和 y 值
于 2013-10-28T12:12:02.213 回答