照书上输入的代码,运行怎么错误?我要运行的是清单1.1和清单1.2
第一个是函数,第二个是程序。两个文件分开编辑的
根据您提供的错误信息来看,第一个错误提示函数或变里’rannge_pwr4_db’无法识别,这个是错误是在你的第一个行数radar_eq中的第12行和第15行左右,写错了,你写成了rannge_pwr4_db,而正确的应该是range_pwr4_db,这两个地方应一致。
第二个错误是程序fig1_12中的第13行那里,也是写错了,你写成了rafar_eq,而正确的应该是第一个函数的名称,即radar_eq
望采纳!!
你自己的图片上代码输入有错误,13行的radar_eq,你的是rafar_eq,照着你的图片我手动打的代码:
% Use this program to reproduce Fig. 1.12 oftext.
close all
clear all
pt = 1.5e+6; % peak power in Watts
freq = 5.6e+9; % radar operating frequency in Hz
g = 45.0; % antenna gain in dB
sigma = 0.1; % radar cross section in m squared
te = 290.0; % effective noise temperature in Kelvins
b = 5.0e+6; % radar operating bandwidth in Hz
nf= 3.0; %noise figure in dB
loss = 6.0; % radar losses in dB
range = linspace(25e3,165e3,1000); % traget range 25 -165 Km, 1000 points
snrl = radar_eg(pt, freq, g, sigma, te, b, nf, loss, range);
snr2 = radar_eg(pt, freq, g, sigma/10, te, b, nf, loss, range);
snr3 = radar_eg(pt, freq, g, sigma*10, te, b, nf ,loss, range);
% plot SNR versus range
figure(1)
rangekm = range ./ 1000,
plot(rangekm,snr3, 'k', rangekm, snrl, 'k-.', rangekm, snr2, 'k:')
grid
legend('\sigma = 0 dBsm','\lsigma = -10dBsm ','\lsigma = -20 dBsm')
xlabel ('Detection range - Km');
ylabel ('SNR - dB');
snrl = radar_eg(pt, freq, g, sigma, te, b, nf, loss, range);
snr2 = radar_eg(pt*.4, freq, g, sigma, te, b, nf, loss, range);
snr3 = radar_eg(pt*18, freq, g, sigma, te, b, nf, loss, range);
figure (2)
plot(rangekm,snr3, 'k',rangekm,snrl, 'k-.' , rangekm, snr2, 'k:')
grid
legend('Pt = 2.16 MW ',' Pt = 15 MW ',' Pt = 0.6 MW')
xlabel ('Detection range - Km');
ylabel ('SNR - dB');
function [snr] = radar_eg(pt, freq, g, sigma, te, b, nf, loss, range)
% This program implements Eq. (1.56)
c = 3.0e+8; % speed oflight
lambda = c /freq; % wavelength
p_peak = 10*log10(pt); % convert peak power to dB
lambda_sqdb = 10*log10(lambda^2); % compute wavelength square in dB
sigmadb = 10*log10(sigma); % convert sigma to dB
four_pi_cub = 10*log10((4.0 * pi)^3); %(4pi)3 in dB
k_db = 10*log10(1.38e-23);% Boltzman's constant in dB
te_db = 10*log10(te); % noise temp. in dB
b_db = 10*log10(b); % bandwidth in dB
range_pwr4_db = 10*log10(range.^4); % vector oftarget range^4 in dB
% Implement Equation (1.56)
num = p_peak + g + g + lambda_sqdb + sigmadb;
den = four_pi_cub + k_db + te_db + b_db + nf+ loss + range_pwr4_db
snr = num - den;
end
运行不报错了,结果如下:
以下答案由GPT-3.5大模型与博主波罗歌共同编写:
清单1.1的代码应该类似于以下内容:
% 清单 1.1:计算pi的值
function p = cal_pi(n)
p = 0;
for i = 1:n
p = p + 4*((-1)^(i+1))/(2*i-1);
end
end
对于这个函数,你需要将代码保存到一个文件中,文件名应该与函数名相同,即 "cal_pi.m"。
当你希望在 MATLAB 中调用这个函数时,你需要先确保当前工作路径中包含了保存这个文件的文件夹。然后,你可以调用该函数并传入所需的输入参数。以下是一个示例:
>> p = cal_pi(1000)
p =
3.1406
清单1.2的代码应该类似于以下内容:
% 清单 1.2:生成数组并调用函数
x = 0:0.01:1;
y = sin(x);
plot(x,y)
对于这个程序,你可以直接将代码复制并粘贴到 MATLAB 命令行窗口中运行,或者将代码保存到一个脚本文件中,例如 "example.m",然后在 MATLAB 命令行窗口中输入文件名即可运行。
如果你在运行这些代码时遇到了错误,你需要仔细查看你输入的代码,看看是否有任何拼写错误或语法错误。如果需要,请先学习一些 MATLAB 的基础知识,例如变量、运算符、函数、脚本和绘图命令,以便更好地理解这些代码。
如果我的回答解决了您的问题,请采纳!
使用interp2(X,Y,Z,X1,Y1,method)
函数, method包含:nearest
,‘linear’,‘spline’,‘cubic’
x = linspace(-5,5,11);
y = linspace(-5,5,11);
[X,Y] = meshgrid(x,y);
Z = 3.*sin(X.^2+Y.^2);
xi = linspace(-5,5,100);
yi = linspace(-5,5,100);
[XI,YI]=meshgrid(xi,yi);
ZI = interp2(X,Y,Z,XI,YI,'cubic');
surf(XI,YI,ZI),view(-25,25)