以下のコードでcqに​数値が出力されないの​で、改善方法を教えて​ください

5 vues (au cours des 30 derniers jours)
篤朗
篤朗 le 26 Sep 2024
% 座標
a = [-90, -70, -50, -30, 20, 40, 60, 80]; % X座標
b = [-90, -70, -50, -30, 20, 40, 60, 80]; % Y座標
c = sin(a) + cos(b);        % Z座標
% グリッド生成
[aq, bq] = meshgrid(linspace(-90, 80, 100), linspace(-90, 80, 100));
% スプライン補間
cq = griddata(a, b, c, aq, bq, 'cubic'); % cubicはスプライン補間
% 等高線プロット
contour(aq, bq, cq, 'ShowText', 'on');
colorbar;
title('等高線プロット(スプライン補間)');
xlabel('X座標');
ylabel('Y座標');
このコードを実行すると、aqとbqには100×100の数値が格納されますが、cqは空集合となってしまいます。エラーコードにはaqとbqとcqのデータの列数と行数が一致していませんと出るだけなので、何処が間違っているのかわかりません。
恐らく私のgriddataの理解が甘いのではないかと思っています。

Réponses (1)

UDAYA PEDDIRAJU
UDAYA PEDDIRAJU le 30 Sep 2024
There's a mismatch in the data requirement of "griddata" function, you can read about it in documentation:
I have worked on the code and modified like this:
% Define a more diverse set of coordinates to avoid collinearity
a = [-90, -70, -50, -30, 20, 40, 60, 80]; % X座標
b = [-90, -80, -60, -40, 10, 30, 50, 70]; % Y座標 (changed to avoid collinearity)
% Calculate Z座標, converting degrees to radians
c = sin(deg2rad(a)) + cos(deg2rad(b));
% Create grid for contour plot
[aq, bq] = meshgrid(linspace(-90, 80, 100), linspace(-90, 80, 100));
% Interpolate data using cubic spline
cq = griddata(a, b, c, aq, bq, 'cubic');
% Debugging outputs
disp('Size of aq:');
disp(size(aq));
disp('Size of bq:');
disp(size(bq));
disp('Size of cq:');
disp(size(cq));
% Check dimensions
if isempty(cq) || any(isnan(cq(:))) % Check if cq has valid values
warning('Interpolation resulted in NaN values or empty output. Check input data.');
cq(isnan(cq)) = 0; % Replace NaNs with 0
end
% Plot contour only if dimensions match
if size(cq, 1) == size(aq, 1) && size(cq, 2) == size(bq, 2)
contour(aq, bq, cq, 'ShowText', 'on');
colorbar;
title('等高線プロット(スプライン補間)');
xlabel('X座標');
ylabel('Y座標');
else
error('Dimensions of Z data (cq) do not match grid dimensions. Sizes: aq (%d,%d), bq (%d,%d), cq (%d,%d)', ...
size(aq, 1), size(aq, 2), size(bq, 1), size(bq, 2), size(cq, 1), size(cq, 2));
end

Catégories

En savoir plus sur ビッグ データの処理 dans Help Center et File Exchange

Tags

Produits


Version

R2023b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!